Awesome
Microsoft.Build.Locator
What is Locator for?
MSBuild offers a .NET API surface that allows you to evaluate and build MSBuild projects from an application. MSBuild is available as a set of NuGet packages that can provide the implementation of the MSBuild programming language to your application. But it's generally not enough to be able to load some MSBuild project: you want your application to be able to load the .csproj
, .vbproj
, .fsproj
, .sqlproj
, .ccproj
and other project types that you can build in Visual Studio (or Visual Studio Build Tools) or with the .NET SDK. To do that, you need more than just MSBuild's assemblies--you must also have access to all of the SDKs and build logic that are imported into those projects.
That additional build logic is distributed with Visual Studio, with Visual Studio extensions, or as part of the .NET SDK. So to correctly load projects, you need to load them in the context of one of those MSBuild installations.
Loading MSBuild from Visual Studio also ensures that your application gets the same view of projects as MSBuild.exe
, dotnet build
, or Visual Studio, including bug fixes, feature additions, and performance improvements that may come from a newer MSBuild release.
How Locator searches for .NET SDK?
MSBuild.Locator searches for the locally installed SDK based on the following priority:
- DOTNET_ROOT
- Current process path if MSBuild.Locator is called from dotnet.exe
- DOTNET_HOST_PATH
- DOTNET_MSBUILD_SDK_RESOLVER_CLI_DIR
- PATH
Note that probing stops when the first dotnet executable is found among the listed variables.
Documentation describing the definition of these variables can be found here: .NET Environment Variables.
Documentation
Documentation is located on the official Microsoft documentation site: Use Microsoft.Build.Locator.
Build status
CI status:
Contributing
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.