MSBuild

Source: Wikipedia, the free encyclopedia.
MSBuild
Developer(s)Microsoft, .NET Foundation
Initial release2003; 21 years ago (2003)
Stable release
v17.8.3 / 15 November 2023; 4 months ago (2023-11-15)[1]
Repository
Written in
Build tool
LicenseMIT License
Websitedocs.microsoft.com/visualstudio/msbuild/msbuild Edit this on Wikidata

Microsoft Build Engine, or MSBuild,

build tools for managed code under the Common Language Infrastructure as well as native C and C++ code. It was first released in 2003 and was a part of .NET Framework. MSBuild is included with Visual Studio, but can also be run independently through MSBuild's command-line interface.[4]

Overview

MSBuild is a

nmake
utility, which remains in use in projects that originated in older Visual Studio releases.

MSBuild acts on MSBuild project files which have a similar

XML syntax to Apache Ant or NAnt. Even though the syntax is based upon well-defined XML schema, the fundamental structure and operation is comparable to the traditional Unix make
utility: the user specifies what will be used (typically source code files) and what the result should be (typically a static library, DLL or an executable application), but the utility itself decides what to do and the order in which to carry out the build.

MSBuild can build a project against a supported .NET Framework version of choice. This feature is called "multitargeting". Any given build of a project, however, can only target one version of the framework at a time.[7]

History

MSBuild was first created in 2003 targeting

Visual Studio 2005 (codenamed Whidbey)[8] and Windows Vista (codenamed Longhorn).[9][10]

Versions

Version .NET Framework Visual Studio Version Usual Install Locations (x86)[11]
2.0 2.0 2005 C:\Windows\Microsoft.NET\Framework\v2.0.50727
3.5 3.5 2008 C:\Windows\Microsoft.NET\Framework\v3.5
4.7.3062.0 4.0 2010 C:\Windows\Microsoft.NET\Framework\v4.0.30319
4.8.3761.0 4.5.2 2012 C:\Windows\Microsoft.NET\Framework\v4.0.30319
12.0[6] 4.5.2 2013 C:\Program Files (x86)\MSBuild\12.0\Bin
14.0 4.6 2015 C:\Program Files (x86)\MSBuild\14.0\Bin
15.0[12] 4.7 2017
  • C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin
  • C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin
  • C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin
16.0[13] 4.7.2 2019
  • C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin
  • C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin
  • C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin
17.0 2022
  • C:\Program Files\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin
  • C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin
  • C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin

Terminology

Target
A Target contains a set of tasks for MSBuild to execute. The focus of MSBuild is the result Target specified when invoking MSBuild with the project file. This is because a Project may contain several Target entries, each executed sequentially (and conditionally). Subsequent dependent Targets are executed before the requested Target. The execution flow of the current Target can be directed using the following attributes: Condition, BeforeTargets, AfterTargets, & DependsOnTargets. Each Target may be self-contained with the necessary Tasks to complete itself. A Target is typically an action executed on a file, set of files or directory.
Task
A Task is a command which is executed in order to complete a Target. Tasks are used to group and execute any number of actions during the build process. They are typically implemented in a .NET assembly as a class which inherits from the Task class or implements the ITask interface. Many basic tasks are shipped as part of the .NET Framework,[14] and community developed tasks are freely available. Some examples of Tasks include copying files, creating directories, or parsing XML.
Properties and Items
MSBuild provides Properties and Items, which are conceptually equivalent to make's macros. Properties specify static values, whereas Items are usually used to define sets of files or folders on which to perform Tasks. Specifying files on Items is made easy by the support of wildcards.

See also

References

  1. ^ "Latest release". Microsoft/msbuild. GitHub. Microsoft. Retrieved 2022-08-20.
  2. ^ "microsoft/msbuild: The Microsoft Build Engine (MSBuild) is the build platform for .NET and Visual Studio". GitHub. Microsoft. Retrieved 2019-07-23.
  3. .
  4. ^ "MSBuild". MSBuild. Microsoft Docs. Retrieved 2019-07-23.
  5. ^ Lander, Rich (18 March 2015). "MSBuild Engine is now Open Source on GitHub". .NET Blog. MSDN Blogs. Microsoft. Retrieved 2019-07-23.
  6. ^ a b "What's new in MSBuild 12.0". MSBuild. Microsoft Docs. Retrieved 2019-07-23.
  7. ^ "MSBuild multitargeting overview". MSBuild. Microsoft Docs. Retrieved 2019-07-23.
  8. ^ "Building, Testing, and Deployment". What's New in Visual Studio 2005. MSDN. Microsoft. Archived from the original on 2014-08-26.
  9. ^ Sneath, Tim (July 19, 2004). "MSBuild: The New Build System for Visual Studio 2005 and Longhorn". Tim Sneath. MSDN Blogs. Retrieved 2018-04-22.
  10. ^ England, Chuck (February 25, 2010). "Getting Started with MSBuild". The Visual Studio Blog. MSDN Blogs. Retrieved 2018-04-22.
  11. ^ "Standard and custom Toolset configurations". MSBuild. Microsoft Docs. Retrieved 2019-07-23.
  12. ^ "What's new in MSBuild 15". MSBuild. Microsoft Docs. Retrieved 2019-07-23.
  13. ^ "What's new in MSBuild 16.0". MSBuild. Microsoft Docs. Retrieved 2019-07-23.
  14. ^ "MSBuild task reference". MSBuild. Microsoft Docs. Retrieved 2019-07-23.

Further reading

External links