Show-BuildGraph.ps1
- use viz-3.9.0
exec -Echo
: echo properties, #221
Like ib.cmd
, the dotnet tool ib
uses the environment variable pwsh
.
Show-BuildGraph.ps1
- use viz-3.5.0
requires
/ Test-BuildAsset
- improved errors on invalid null/empty arguments
exec
/ Invoke-BuildExec
- new switch
StdErr
, to get more useful error messages, #218 $LastExitCode
is set to 0 before invoking, to avoid subtleties
Fix cryptic errors on unknown parameters, #217
Minor tweaks, new demo Tasks/Repeat2, etc.
Show-BuildGraph.ps1
- available at PSGallery
- uses
Viz.js
by default anddot
with-Dot
- shows node and edge tooltips (synopses, names)
Show-BuildMermaid.ps1
- uses
Mermaid
10.8.0
Resolve-MSBuild.ps1
: Tweak errors, do not wrap internal errors, #216
New script Show-BuildMermaid.ps1
for viewing build task graphs.
Support verbose and information streams in Build-Parallel
, #212
Add ProgressAction
to common parameters, #210
Use global $pwd
, #208
Make Use-BuildEnv
parameters mandatory.
New helper function Use-BuildEnv
.
Fix ANSI in PS Core 7.2.6, #204
- rename master to main, update links
- use
%pwsh%
in ib.cmd - use
net6.0
in ib tool
Fix package version issue, #198.
Amend Build-Checkpoint
for PS v2.
Retire deprecated alias error
, use Get-BuildError
instead.
Amend parameter sets of Build-Checkpoint
.
New parameter Path
of requires
(Test-BuildAsset
).
Amend output on task errors. #194
Write-Build
: render lines separately, #193
Tweak getting variable expressions.
Amend exec -echo
output, use cd ...
.
Add Release.build.ps1.
Amend exec -echo
for ANSI rendering, #192
With PowerShell 7.2+ and $PSStyle.OutputRendering
ANSI, Write-Build
uses
ANSI escape sequences. As far as Write-Build
is used by the engine itself,
build/task headers/footers and build messages are rendered accordingly, for
example, colored in GitHub workflow terminals.
New switch Auto
of Build-Checkpoint
.
New build script helper Confirm-Build
- See Tasks/Confirm for
Confirm-Build
demo and notes - Tasks/Confirm replaces its predecessor Tasks/Ask
The build variable $Task
previously defined for tasks is also defined in the
script scope. It has the only property Name
set to $BuildFile
, the build
script path. Scripts should not set this variable or change its content.
Work around potential strict mode issues, #190.
Add parameter ShowParameter
to Build-Parallel
, #189.
Fix Resolve-MSBuild.ps1
BuildTools 2022, #188.
Support MSBuild 17.0 (VS 2022).
Make the variable $Job
read only, #185.
Use $Job
variable instead of argument, #185.
Enter-BuildJob
and Exit-BuildJob
are called with the job script block as the first argument, #185.
Added the variable $OriginalLocation
, where the build starts, #183.
Published nuget.org/packages/ib, the dotnet tool ib
.
Removed ib.cmd
, ib.sh
from the package avoiding conflicts with the tool ib
.
The scripts are still available in the repository, slightly adjusted for their new roles.
Users decide which of the ib
shell commands is more suitable for their scenarios.
For details see ib commands.
Add $pwd
information to exec -echo
, #179.
Add the ErrorMessage
parameter to exec
, #178.
Inherit build headers and footers from parent builds.
Add the switch Echo
to exec
.
Resolve-MSBuild
Get-MSBuild15Guess
- stop search as soon as items found.
Tweak use of dynamic parameters.
Fixed potential issues with tasks and parameters named Count
, Keys
, Values
, #173.
Created Invoke-Build.template
Fail on adding tasks after loading build scripts, #171.
Add InvocationInfo
to Write-Warning
records and use in post build text.
New-VSCodeTask.ps1 1.3.1 - suppress echo and reuse messages in terminal.
Changed the default script resolution rule, see #166.
This change is potentially breaking but the chances are low.
Support PowerShell doc comment format for task synopsis #165
Invoke-Build **
includes hidden test files.
Add ib.sh
to the package, #162.
Add the workaround notes to exec
help.
Add version to Invoke-Build.ps1 header comment.
New-VSCodeTask.ps1
- merges custom .vscode/tasks-merge.json with generated
- new parameter
Merge
specifies the custom merge path - new parameter
Shell
specifies the custom shell path - new parameter
WhereTask
filters build tasks
Show-TaskHelp.ps1
- process Inputs
and Outputs
as well as If
and Jobs
.
Add parameter MinimumVersion
to Resolve-MSBuild
#154
Fix sorting by product in Resolve-MSBuild
#153
Do not make script parameters named, fix #152
Add the switch Preserve
to Build-Checkpoint
#150
Resolve-MSBuild
- allow some spaces in versions #148
Support MSBuild 16.0 of VS 2019, #146.
Support remove -Verbose
, #147.
Amend help about Write-Build
, #144.
Fix wrong task info in warning records, #142.
Save checkpoints after each task and before the first, #140.
Tools
- New Build-JustTask.ps1 invokes tasks without references.
- Show-BuildGraph.ps1 uses the latest viz.js, see #139.
Tiny internal tweak for Show-BuildGraph.ps1, #137
Show-BuildGraph.ps1, see #136:
- Show conditional tasks as diamonds.
- Show job numbers only on edges.
Add help for Set-BuildHeader
, Set-BuildFooter
.
- Add
Set-BuildFooter
in addition toSet-BuildHeader
, #125 - Update the sample
Tasks/Header
, use custom footers, too. - Tweak
remove
for more useful error location info.
Add the robust helper remove
, the alternative to Remove-Item
, see #123
Tools
- New-VSCodeTask.ps1 1.1.6 - Confirm removal of not generated file.
- New switch
Latest
ofResolve-MSBuild
, #122
- New: Alternative syntax of task parameters, kind of inline splatting, #119
- Add "missing output" message to incremental task processing, #120
Tools
- Invoke-TaskFromVSCode.ps1 should save the file on invoking, #118
- Improve Invoke-TaskFromVSCode.ps1 error info in some cases
- Support
viz.js
in Show-BuildGraph.ps1
Show-TaskHelp
- switches are shown after other parameters.- Optimized calls of
Show-TaskHelp
fromInvoke-Build
.
New internal tool, #117
- The new tool Show-TaskHelp.ps1 is included to packages.
Invoke-Build ... -WhatIf
uses the newShow-TaskHelp
.
New external tool, #116
- Show-BuildDgml.ps1 generates build graphs as DGML for Visual Studio.
Tidy up some check failure errors, #115
Convert FormatTaskName
by Convert-psake
, #114
Allow empty lines between synopsis comments and tasks, #111.
Remove actions on dot-sourcing, #112.
Retire obsolete features:
(job TaskName -Safe)
- instead, use?TaskName
, see #105.use VisualStudio
- not used much, not designed for VS 2017
Preserve attributes of build script parameters, #109.
Amend exit codes on -Safe
in cmd: 1 on argument errors, 0 otherwise.
Add ability to use MSBuild from Visual Studio Preview, #107.
Avoid trailing \r
in task synopses extracted from block comments.
Amend the role of Done
in custom tasks. It is always called and works
as finally
for a task. Handlers check for $Task.Error
if it matters.
Improve Result
on invalid arguments
- Ensure
Result
's variable or hashtableValue
entry is always created. - Fail with a proper error if
Result
is not a string or hashtable. - On invalid calls ensure at least a surrogate result
Error
.
Amend Build-Parallel
- Better errors on invalid builds parameters.
- Do not count incomplete build results.
Tidy up help.
- Improve syntax and usability of safe references. #105
- Introduce
?TaskName
instead of deprecated(job TaskName -Safe)
. - Support
?TaskName
in the parameter-Task
ofInvoke-Build
.
- Introduce
- Redesign error output.
- Improve for VSCode, AppVeyor, and redirection. #106
- If a task fails in
If
, add it to the list of invoked tasks.
Build-Checkpoint
should fail if not supported WhatIf
is specified.
- Support colored output in AppVeyor, #103.
- Deprecate
use VisualStudio
.
New command Build-Checkpoint
replaces Invoke-Build -Checkpoint
. If you use
persistent builds then change the command and parameters, see #101.
New command Build-Parallel
replaces Invoke-Builds
(mind "s"). If you use
parallel builds then simply rename the command, see #100.
Normalize, test, and make $BuildRoot
constant after loading tasks (#95).
Invoke-Builds (parallel builds)
- Add
FailHard
, it tells to abort builds if any build fails. - Redesign the script without using runspace pools.
- Avoid some duplicated info in output.
Package the module files together with scripts. As a result, the script package may be used as the module, too. This change does not affect the module package.
Retire Get-BuildVersion
. Use (Get-Module InvokeBuild).Version
instead.
In theory, this change is breaking but it seems the function was not used.
The standard module version is used from now on.
Fix resuming of persistent builds after failures in task -If
(#90).
Support version suffix x86 in use
and Resolve-MSBuild
(#85).
Resolve MSBuild 15 to ../amd64/MSBuild.exe on x64 (#84).
Warn about always skipped double references (#82).
- Fix #80, lost
Task
in the collected errors. - Fix potential PS v6-beta.3 issues in ib.cmd.
Support script block as File
(#78).
Improved product selection logic in Resolve-MSBuild
(#77).
If you use the module VSSetup
make sure it is not too old.
It should support -Product *
.
- Avoid some
property
limitations (#75). - Use
&
inexec
, it looks safer. - Tweak help.
- Remove redundant information from safe errors.
- Remove retired "Parameters" from reserved.
- New block
Set-BuildHeader
for writing custom task headers. - New function
Get-BuildSynopsis
, e.g. forSet-BuildHeader
.
See repo/Tasks/Header for examples of Set-BuildHeader
and Get-BuildSynopsis
.
New command requires
, the alias of Test-BuildAsset
(#73).
Rework engine variables to reduce noise on debugging (#72).
- Add exported aliases to .psd1, work around #71.
- Fix leaked variable on dot-sourcing Invoke-Build.
Fix incremental tasks on Mono (#69).
- Write messages about redefined tasks, resolve #68.
- Fix unexpected output on some debugging cases.
Improve errors on tasks check failures (#67).
Retire obsolete events defined as functions, see #66.
Use less cryptic names for internal functions (#63).
Adjust property
behaviour to PowerShell and MSBuild (#60):
- get the session variable value if it is not $null or ''
- get the environment value if it is not $null or ''
- get the specified default if it is not $null
- throw an error
Resolve-MSBuild
supports the BuildTools installation (#57).
Improve info on typical mistakes:
- missing comma in job lists
- unexpected build output
- dangling script blocks
Improve errors on invalid script syntax (#56).
New Resolve-MSBuild.ps1 for finding MSBuild 2.0-15.0, specified or the latest.
It may be used directly. Build scripts use it via the alias Resolve-MSBuild
.
NuGet and PSGallery packages include this script.
The old way use <version> MSBuild
is supported and works with all versions.
But the new script is used internally, Invoke-Build.ps1 alone is not enough.
Fix #54, exec
should use $global:LastExitCode
.
Use exit /B
in ib.cmd (#52).
- Incremental tasks print some more info (#49)
- Outputs block receives piped Inputs (#50)
Module help tweaks.
use
: The conventional path VisualStudio\<version>
is resolved via the
registry to the Visual Studio tools directory (devenv
, mstest
, tf
).
Event blocks instead of functions, see #36.
Use exit 0
on success (#34).
Invoke-Build is cross-platform with PowerShell v6.0.0-alpha.
Build script parameters are specified as Invoke-Build dynamic parameters.
The parameter Parameters
was removed. This change is breaking in some
cases, see #29.
Avoided cryptic errors on invoking scripts with invalid syntax and on resuming builds with an invalid checkpoint file.
Previous release notes: V2 Release Notes