You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
An API to locate MSBuild assemblies from an installed Visual Studio location. Use this to ensure that calling the MSBuild API will use the same toolset that a build from Visual Studio or msbuild.exe would.
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.
An API to locate MSBuild assemblies from an installed Visual Studio location. Use this to ensure that calling the MSBuild API will use the same toolset that a build from Visual Studio or msbuild.exe would.