The Microsoft Build Engine (MSBuild) is the build platform for .NET and Visual Studio.
Clone or download
AndyGerlicher Merge pull request #3828 from Microsoft/exp/ToolsetUpdate2
Update ToolsVersion to `Current` (on master)
Latest commit ee7ab16 Oct 19, 2018
Failed to load latest commit information.
.github Copy code-of-conduct information to GitHub path Mar 19, 2018
branding Initial commit of branding (#941) Aug 24, 2016
build Get Roslyn from 15.0 folder Oct 10, 2018
documentation Update ToolsVersion to Current Oct 10, 2018
ref Allow spedifying metadata as attributes on item definitions. (#3853) Oct 12, 2018
scripts Expand logFile at the end of the script (#3112) Mar 20, 2018
setup Add creation of VS.ExternalAPIs.MSBuild and MsBuild.Engine.Corext NuG… Jan 12, 2018
src Merge pull request #3828 from Microsoft/exp/ToolsetUpdate2 Oct 19, 2018
.editorconfig Added editorconfig properties from corefx Mar 20, 2015
.gitattributes Add GetFileHash and VerifyFileHash tasks (#3398) Jun 13, 2018
.gitignore Update .gitignore to exclude Rider workspace files. Feb 12, 2018
.vsts-dotnet-ci.yml Publish logs in CI builds (#3849) Oct 11, 2018
.vsts-dotnet.yml Use NBGV_SemVer1 for insertion-package version Sep 4, 2018
CompatBaseline.txt Update CompatBaseline to reflect Update 1 changes Oct 26, 2015
Directory.Build.props Update ToolsVersion to Current Oct 10, 2018
Directory.Build.rsp Add Directory.Build.rsp Jan 25, 2018
Directory.Build.targets Use Central Package Versioning SDK (#3441) Aug 14, 2018
LICENSE Update License to reflect .Net Foundation (#2303) Jul 14, 2017
MSBuild.Dev.sln Replace NuGetSdkResolver with SDK manifest (#3246) May 14, 2018
MSBuild.SourceBuild.sln Replace NuGetSdkResolver with SDK manifest (#3246) May 14, 2018
MSBuild.sln [mono] Fix Release-MONO configuration mappings in MSBuild.sln (#3431) Jun 21, 2018
NuGet.Config Use Central Package Versioning SDK (#3441) Aug 14, 2018
PublishToBlob.proj Enable manifest generation for msbuild (#2896) Jan 23, 2018 Update VSTS badge URI (#3678) Aug 31, 2018
RunApiPort.bat Add the rest of the product assemblies to RunApiPort, fix them so the… Aug 14, 2015
THIRDPARTYNOTICES.txt Update third party notice to include Samples for notice Feb 1, 2018
build.cmd Adjust build.cmd for common dev usage (#3480) Jul 5, 2018 Update non-Windows build scripts Feb 20, 2018
global.json Use Central Package Versioning SDK (#3441) Aug 14, 2018
netci.groovy Remove jenkins jobs Aug 14, 2018
runApiCompat.bat Add Microsoft.Build.Tasks.Core to ApiCompat Sep 11, 2015
version.json Bump version to avoid (internal) package conflicts Oct 3, 2018

Microsoft.Build (MSBuild)

The Microsoft Build Engine is a platform for building applications. This engine, which is also known as MSBuild, provides an XML schema for a project file that controls how the build platform processes and builds software. Visual Studio uses MSBuild, but MSBuild does not depend on Visual Studio. By invoking msbuild.exe on your project or solution file, you can orchestrate and build products in environments where Visual Studio isn't installed.

For more information on MSBuild, see the MSBuild documentation on

Build Status

The current development branch is master. It builds for .NET Core and the full desktop .NET framework. Changes in master will go into the next "major" update of MSBuild.

Build Status

We have forked for MSBuild 15.9 in the branch vs15.9.

Runtime\OS Windows Ubuntu 16.04 Mac OS X
Full Framework Build Status N/A N/A
.NET Core Build Status Build Status Build Status

Source code

  • Clone the sources: git clone


Building MSBuild with Visual Studio 2017

For the full supported experience, you will need to have Visual Studio 2017 Update 7 or higher.

To get started on Visual Studio 2017:

  1. Install Visual Studio 2017. Select the following Workloads:
  • .NET desktop development
  • .NET Core cross-platform development
  1. Install the .NET Core 2.1 SDK.
  2. Clone the source code (see above).
  3. Open a Developer Command Prompt for VS 2017 prompt.
  4. Build the code using the build.cmd script. This also restores packages needed to open the projects in Visual Studio.
  5. Open MSBuild.sln in Visual Studio 2017.

Building MSBuild in Unix (Mac & Linux)

MSBuild can be run on Unix systems that support .NET Core. Set-up instructions can be viewed on the wiki: Building Testing and Debugging on .Net Core MSBuild


You can turn on localized builds via the /p:LocalizedBuild=true command line argument. For more information on localized builds and how to make contributions to MSBuild's translations, see our localization documentation

How to Engage, Contribute and Provide Feedback

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact with any additional questions or comments.

Getting Started

Before you contribute, please read through the contributing and developer guides to get an idea of what kinds of pull requests we will or won't accept.

Looking for something to work on? This list of up for grabs issues is a great place to start.

You are also encouraged to start a discussion by filing an issue or creating a gist.

MSBuild Components

  • MSBuild. Microsoft.Build.CommandLine is the entrypoint for the Microsoft Build Engine (MSBuild.exe).

  • Microsoft.Build. The Microsoft.Build namespaces contain types that provide programmatic access to, and control of, the MSBuild engine.

  • Microsoft.Build.Framework. The Microsoft.Build.Framework namespace contains the types that define how tasks and loggers interact with the MSBuild engine. For additional information on this component, see our Microsoft.Build.Framework wiki page.

  • Microsoft.Build.Tasks. The Microsoft.Build.Tasks namespace contains the implementation of all tasks shipping with MSBuild.

  • Microsoft.Build.Utilities. The Microsoft.Build.Utilities namespace provides helper classes that you can use to create your own MSBuild loggers and tasks.


MSBuild is licensed under the MIT license.