Microsoft Build Engine, or MSBuild, is a set of
free and open-source
Free and open-source software (FOSS) is software available under a Software license, license that grants users the right to use, modify, and distribute the software modified or not to everyone free of charge. FOSS is an inclusive umbrella term ...
build tools for
managed code under the
Common Language Infrastructure
The Common Language Infrastructure (CLI) is an open specification and technical standard originally developed by Microsoft and standardized by International Organization for Standardization, ISO/International Electrotechnical Commission, IEC (ISO/ ...
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
A command-line interface (CLI) is a means of interacting with software via command (computing), commands each formatted as a line of text. Command-line interfaces emerged in the mid-1960s, on computer terminals, as an interactive and more user ...
.
Overview
MSBuild is a
build tool that helps automate the process of creating a software product, including
compiling
In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs tha ...
the
source code
In computing, source code, or simply code or source, is a plain text computer program written in a programming language. A programmer writes the human readable source code to control the behavior of a computer.
Since a computer, at base, only ...
,
packaging
Packaging is the science, art and technology of enclosing or protecting products for distribution, storage, sale, and use. Packaging also refers to the process of designing, evaluating, and producing packages. Packaging can be described as a coo ...
, testing,
deployment and creating documentations. With MSBuild, it is possible to build Visual Studio projects and solutions without the Visual Studio
IDE installed. MSBuild is
free and open-source
Free and open-source software (FOSS) is software available under a Software license, license that grants users the right to use, modify, and distribute the software modified or not to everyone free of charge. FOSS is an inclusive umbrella term ...
. MSBuild was previously bundled with
.NET Framework; starting with
Visual Studio 2013, however, it is bundled with Visual Studio instead.
MSBuild is a functional replacement for the
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
Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing data. It defines a set of rules for encoding electronic document, documents in a format that is both human-readable and Machine-r ...
syntax to
Apache Ant or
NAnt. Even though the syntax is based upon well-defined
XML schema
An XML schema is a description of a type of XML document, typically expressed in terms of constraints on the structure and content of documents of that type, above and beyond the basic syntactical constraints imposed by XML itself. These constrai ...
, 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.
History
MSBuild was first created in 2003 targeting
.NET Framework 2.0 for use in
Visual Studio 2005 (codenamed Whidbey) and
Windows Vista
Windows Vista is a major release of the Windows NT operating system developed by Microsoft. It was the direct successor to Windows XP, released five years earlier, which was then the longest time span between successive releases of Microsoft W ...
(codenamed Longhorn).
Versions
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,
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
*
List of build automation software
References
Further reading
*
*
*
*
*
*
*
External links
*
{{Microsoft FOSS
Build automation
Compiling tools
Free and open-source software
Microsoft free software
Microsoft Visual Studio
Software using the MIT license
2003 software