MSBuild can be successfully built on Windows, OS X 10.13, Ubuntu 14.04, and Ubuntu 16.04.
build.cmd -msbuildEngine dotnet
Install the latest .NET SDK from https://dotnet.microsoft.com/download. That will ensure all prerequisites for our build are met.
- OpenSSL: MSBuild uses the .Net CLI during its build process. The CLI requires a recent OpenSSL library available in
/usr/lib
. This can be downloaded using brew on OS X (brew install openssl
) and apt-get (apt-get install openssl
) on Ubuntu, or building from source. If you use a different package manager and see an error that saysUnable to load DLL 'System.Security.Cryptography.Native'
,dotnet
may be looking in the wrong place for the library.
./build.sh
If you encounter errors, see Something's wrong in my build
./build.sh --test
The best way to get .NET Core MSBuild is by installing the .NET Core SDK, which redistributes us. This will get you the latest released version of MSBuild for .NET Core. After installing it, you can use MSBuild through dotnet build
or by manual invocation of the MSBuild.dll
in the dotnet distribution.
Set the environment variable MSBUILDDEBUGONSTART
to 2
, then attach a debugger to the process manually after it starts.
To build projects using the MSBuild binaries from the repository, you first need to do a build (command: build.cmd /p:CreateBootstrap=true
) which produces a bootstrap directory mimicking a Visual Studio (full framework flavor) or dotnet CLI (.net core flavor) installation.
Now, just point dotnet ./artifacts/bin/bootstrap/<TARGET_FRAMEWORK>/MSBuild/MSBuild.dll
at a project file. (Change <TARGET_FRAMEWORK> to current target framework, for example net7.0, net8.0)
Alternatively, if you want to test the msbuild binaries in a more realistic environment, you can overwrite the dotnet CLI msbuild binaries (found under a path like ~/dotnet/sdk/3.0.100-alpha1-009428/
) with the just-built MSBuild . You might have to kill existing dotnet
processes before doing this. You can use Deploy-MSBuild.ps1 -runtime Core
to do the copy. Then, (using the previous dotnet example directory) just point ~/dotnet/dotnet build
at a project file.
See other debugging options here.