README
/* Default styles provided by pandoc.
** See https://pandoc.org/MANUAL.html#variables-for-html for config info.
*/
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
svg {
height: auto;
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
border: none;
border-top: 1px solid #1a1a1a;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}



Build Automation in
PowerShell
Invoke-Build is a build and test automation tool which invokes tasks
defined in PowerShell v3.0+ scripts. It is similar to psake but arguably
easier to use and more powerful. It is complete, bug free, well covered
by tests.
In addition to basic task processing the engine supports
- Incremental tasks with effectively processed inputs and
outputs.
- Persistent builds which can be resumed after interruptions.
- Parallel builds in separate workspaces with common stats.
- Batch invocation of tests composed as tasks.
- Ability to define new classes of tasks.
Invoke-Build v3.0.1+ is cross-platform with PowerShell Core.
Invoke-Build can be effectively used in VSCode and ISE.
Several PowerShell Team projects use Invoke-Build.
The package
The package includes the engine, helpers, and help:
Extra scripts, see PSGallery and the repository:
And some more tools, see the repository:
Install as module
Invoke-Build is published as PSGallery module InvokeBuild.
You can install it by one of these commands:
Install-Module InvokeBuild
To install the module with Chocolatey, run the following command:
choco install invoke-build
NOTE: The Chocolatey package is maintained by its owner.
Install as scripts
Invoke-Build is also published as nuget.org/packages/Invoke-Build.
If you use scoop
then invoke:
scoop install invoke-build
and you are done, scripts are downloaded and their directory is added
to the path. You may need to start a new PowerShell session with the
updated path.
Otherwise, download the package manually, rename it to zip, extract
its tools and rename to InvokeBuild. Consider
including this directory to the path for invoking scripts by names. Or
copy to any PowerShell module directory in order to use it as
module.
Install as dotnet tool
nuget.org/packages/ib
provides Invoke-Build as the dotnet tool ib
which may be
installed as global or local.
To install the global tool:
dotnet tool install --global ib
To install the local tool:
dotnet new tool-manifest # once on setting up a repo with tools
dotnet tool install --local ib
See ib/README
for more details about ib
commands.
Getting help
If you use the module (known issue #2899)
or the script is not in the path, use the full path
help .../Invoke-Build.ps1
instead of
help Invoke-Build
.
In order to get help for the engine, invoke:
help Invoke-Build -full
In order to get help for internal commands:
. Invoke-Build
help task -full
help exec -full
...
See also online Invoke-Build
Help
Online resources
Questions, suggestions, and reports are welcome at discussions
and issues.
Credits