MSBuild uses an XML-based project file format that is straightforward and extensible. The MSBuild project file format lets developers describe the items that are to be built, and also how they are to be built for different operating systems and configurations. In addition, the project file format lets developers author reusable build rules that can be factored into separate files so that builds can be performed consistently across different projects in the product.

Role of Visual Studio

Visual Studio normally creates and manages the project files (.csproj,.vbproj, vcxproj, and others) containing MSBuild XML code that executes when you build a project by using the IDE. Visual Studio projects import all the necessary settings and build processes to do typical development work, but you can extend or modify them from within Visual Studio or by using an XML editor. So most of the time, you would not notice that you are using it. However, it is not required to use visual studio to build source code. You can run MSBuild on a machine which does not have Visual Studio installed fine.

Download MSBuild

Earlier, it used to be installed with .NET framework. However, starting from Visual Studio 2013, you can find MSBuild.exe in the MSBuild folder (%ProgramFiles%\MSBuild on a 32-bit operating system, or %ProgramFiles(x86)%\MSBuild on a 64-bit operating system).

Alternatively, if you have Visual Studio installed, you can use the Visual Studio Command Prompt, which has a path that includes the MSBuild folder.

The latest (as of mid-2017) stand-alone MSBuild installers can be found here: https://www.visualstudio.com/downloads/

Scroll down to “Other Tools and Frameworks” and choose “Build Tools for Visual Studio 2017” (despite the name, it’s for users who don’t want the full IDE).

Alternatively, you can google for “Microsoft Build Tools” and download the latest version available.

Define a basic project file

Since at very basic, it requires a project file to work, you need to pass it to the MSBuild. The simplest MSBuild project file would contain the following XML data:

1
2

Above XML code will identify that this is an MSBuild project file. Everything else needs to be placed inside the Project element. In terms of MSBuild XML schema, you would need to define properties, items, targets, etc. When building software applications, you will always need to know two pieces of information: what is being built and what build parameters are being used.

Running MSBuild at command prompt

Once we have created a project file, we can use msbuild at command line along with certain options. Command-line options let you set properties, execute specific targets, and set other options that control the build process. For example, below command tells MSBuild to build MyProj project in Debug configuration mode:

MSBuild.exe MyProj.proj /property:Configuration=Debug

Configure SYSTEM PATH

If you want to be able to run MSBuild from any directory, you need to add MSBuild path to environment variable PATH.

For this, at the command prompt, type set PATH=%PATH%;%ProgramFiles%\MSBuild or set PATH=%PATH%;%ProgramFiles(x86)%\MSBuild depending upon where it is installed.

You can also do the same using GUI. Otherwise, you need to navigate to the directory containing MSBuild and then run it from there.