Executes the MSBuild.exe tool against the specified Visual Studio solution or project file.

Minimum PowerShell version


Installation Options

Copy and Paste the following command to install this package using PowerShellGet More Info

Install-Module -Name Invoke-MsBuild -RequiredVersion 2.1.0

You can deploy this package directly to Azure Automation. Note that deploying packages with dependencies will deploy all the dependencies to Azure Automation. Learn More

Manually download the .nupkg file to your system's default download location. Note that the file won't be unpacked, and won't include any dependencies. Learn More




(c) 2016 Dan.Schroeder. All rights reserved.



Invoke MsBuild Invoke-MsBuild Build Compile




This module has no dependencies.

Release Notes

- Added new Use32BitMsBuild parameter to allow users to force the 32-bit version of MsBuild.exe to be used instead of the 64-bit version when both are available.

Invoke-MsBuild v2 has the following breaking changes from v1:
 - A hash table with several properties is returned instead of a simple $true/$false/$null value.
 - The GetLogPath switch is gone and replaced with the WhatIf switch.

New features in v2 include:
 - A build log file containing only build errors is created alongside the regular build log file.
 - The errors build log file can be auto-launched on build failure.
 - New switch has been added to show the build output in the calling scripts console window (does not work with some 3rd party consoles due to Start-Process cmdlet bug).
 - A hash table containing the following properties is now returned:

+ BuildSucceeded = $true if the build passed, $false if the build failed, and $null if we are not sure.
+ BuildLogFilePath = The path to the builds log file.
+ BuildErrorsLogFilePath = The path to the builds error log file.
+ ItemToBuildFilePath = The item that MsBuild is ran against.
+ CommandUsedToBuild = The full command that is used to invoke MsBuild. This can be useful for inspecting what parameters are passed to MsBuild.exe.
+ Message = A message describing any problems that were encoutered by Invoke-MsBuild. This is typically an empty string unless something went wrong.
+ MsBuildProcess = The process that was used to execute MsBuild.exe.

Changes to make when updating from v1 to v2:
- To capture/display the build success result, you must change:
 Invoke-MsBuild ...
 (Invoke-MsBuild ...).BuildSucceeded

- To get the path where the log file will be created, you must change:
 Invoke-MsBuild ... -GetLogPath
 (Invoke-MsBuild ... -WhatIf).BuildLogFilePath

Version History

Version Downloads Last updated
2.6.5 13,002 10/29/2020
2.6.4 51,660 2/1/2019
2.6.3 5 2/1/2019
2.6.2 5,012 7/3/2018
2.6.1 1,238 5/1/2018
2.6.0 6,682 5/15/2017
2.5.1 219 4/22/2017
2.5.0 22 4/21/2017
2.4.2 14 4/20/2017
2.4.1 18 4/20/2017
2.4.0 123 4/2/2017
2.3.1 8 4/1/2017
2.3.0 28 3/31/2017
2.2.0 1,040 12/2/2016
2.1.1 346 9/14/2016
2.1.0 (current version) 340 6/24/2016
2.0.0 136 5/25/2016
1.6.3 109 4/6/2016
1.6.2 9 4/6/2016 61 3/7/2016 11 3/4/2016
1.6.0 18 3/1/2016
Show less