What is MSBuild? - Incredibuild (2023)

What is MSBuild? - Incredibuild (1)

Try it now

<< Back to integrations

What is MSBuild? - Incredibuild (2)

MSBuild, or the Microsoft Build Engine platform, is a collection of tools used to build applications using Microsoft and third-party compilers like Intel and NVIDIA CUDA.

Use MSBuild with Incredibuild

What is MSBuild?

MSBuild, or the Microsoft Build Engine platform, is a collection of tools used to build applications using Microsoft and third-party compilers like Intel and NVIDIA CUDA. It uses an XML control schema to instruct the system on how to compile the project. While MSBuild is included and used by Visual Studio, it is separate and useable without installing the full Visual Studio suite.

Try it now

What is MSBuild? - Incredibuild (3)

What can it do, and how does it work?

MSBuild is the Microsoft toolchain for compiling code, linking it with any necessary dependencies, and then converting it into assembly language for use in an executable file.

When you run MSBuild, either via Visual Studio or on the command line, the project file and any deployment directives are combined into a single set of instructions. As MSBuild iterates through each project in the build instructions, then builds the project using the appropriate compiler and linker. If the project is web-based, it invokes additional tools like MSDeploy or VSDBCMD to deploy web applications and interact with any necessary databases. Additionally, MSBuild can execute tests and any additional workloads specified in the project file.

Try it now

Get Free License

History of MSBuild and the Latest Version

Microsoft has released various compilers since the MS-DOS and Windows 9x days. Development suites like Microsoft Visual C++ and Visual Basic included these compilers as built-in components tailored to the specific language those products targeted, rather than stand-alone tools.

In 1997, Microsoft released Visual Studio 97, which included a unified development environment for multiple languages. Microsoft released MSBuild in 2003 as part of the .NET Framework, allowing developers to compile .NET projects. Still, it wasn’t until Visual Studio 2013 when the MSBuild system (then version 12) emerged as a stand-alone software package that could build not only .NET applications but C#, C++, and Visual Basic programs as well.

Since 2013, MSBuild has continued to be released as part of Visual Studio but is also available as a separate download. As of this writing, the latest stable version of the MSBuild Tools is 2019 – 16.9.3.

How to Download and Install MSBuild

The easiest way to install MSBuild is to install it as part of Microsoft’s Visual Studio IDE, available at https://visualstudio.microsoft.com/downloads/. If you want to install MSBuild without Visual Studio, you can download them from https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019.

The Visual Studio installer is more complex as it allows the installation of various compilers, language support modules for the IDE, and other related tools like Git. If you choose the build tools (commonly called MSBuild) installer, it will still use the Visual Studio setup system but only preselect the MSBuild Tools. Clicking the Install button without selecting other items will set up MSBuild.

MSBuild Examples

In contrast to compiler systems like GCC, MSBuild takes most of its parameters from the project XML and development environment specification files. As such, a typical command line build looks like this:

MSbuild.exe Project.proj /fl /ds /p:TargetEnvPropsFile=EnvConfig\Dev.proj

The .proj files are produced automatically by Visual Studio, but since they are simply XML files, you can either create them yourself or edit existing files.

In the above example, the /fl switch tells MSBuild to log the output of the build process to a file called msbuild.log. The /ds switch, short for /detailedsummary, produces a detailed report at the end of the build.

You can specify /m:X to use X CPU cores on the system to increase the speed of the compiler and /v:X to adjust the verbosity of MSBuild using values “q” for quiet, “m” for minimal, “n” for normal, “d” for detailed, or “diag” for diagnostic.

You can reference additional command line parameters for MSBuild (https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2015/msbuild/msbuild-command-line-reference) and explore the XML format of the project files (https://docs.microsoft.com/en-us/aspnet/web-forms/overview/deployment/web-deployment-in-the-enterprise/understanding-the-project-file).

MSBuild for Windows

MSBuild is native to Windows and runs well on this platform. Installation is covered under the previous heading “How to Download and Install MSBuild”.

MSBuild for Linux

On Linux, you have the choice of downloading binaries of MSBuild or compiling the tools from scratch. Installing the pre-built binaries is easy—just grab the .NET Core SDK for Linux (https://dotnet.microsoft.com/download).

If you are adventurous and want to compile MSBuild from source, you can find the project at GitHub (https://github.com/dotnet/msbuild). Microsoft has provided directions on building the suite on Linux ( https://github.com/dotnet/msbuild/blob/main/documentation/wiki/Building-Testing-and-Debugging-on-.Net-Core-MSBuild.md).

Advantages

MSBuild is an excellent tool for automating the building of software on Windows. Its deep integration with the operating system, superb compatibility with Visual Studio, open-source license, and flexibility make it an excellent choice. Using it outside Visual Studio allows for command line integration with external build scripts and systems, enabling more robust automation possibilities.

Is it Open Source?

Microsoft released MSBuild as free and open-source software at GitHub (https://github.com/dotnet/msbuild) under the MIT License.

MSBuild and Incredibuild

Incredibuild turbocharges development with Virtualized Distributed Processing™ technology, turning every host into a supercomputer with hundreds of cores. With Incredibuild, accelerated product development from compilation to testing and release automation delivers better products to market radically faster.

Incredibuild virtualizes your local MSBuild environment on every host you specify, and is bundled as the accelerator of choice within Microsoft Visual Studio. Using the same code, processes, and tools, developers and managers accelerate product development with X8 faster builds, 80% shorter release cycles, and X4 the number of iterations, consistently releasing better products to market radically faster.

What is MSBuild? - Incredibuild (4)

Bottom line

MSBuild is an integral tool in Windows development shops.

Get Free License

More Build systems

  • CMake
  • Ninja
  • QMake
  • GNU Make
  • What is MSBuild? - Incredibuild (9)

    Make

  • What is MSBuild? - Incredibuild (10)

    WAF

  • What is MSBuild? - Incredibuild (11)

    QBS

  • What is MSBuild? - Incredibuild (12)

    Jom

  • What is MSBuild? - Incredibuild (13)

    Scons

  • What is MSBuild? - Incredibuild (14)

    Jam / Bjam / jamPlus

  • What is MSBuild? - Incredibuild (15)

    Bitbake

We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies. However you may visit Cookie Settings to provide a controlled consent.

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.

Always Enabled

Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.

CookieDurationDescription
ARRAffinitysessionARRAffinity cookie is set by Azure app service, and allows the service to choose the right instance established by a user to deliver subsequent requests made by that user.
ARRAffinitySameSitesessionThis cookie is set by Windows Azure cloud, and is used for load balancing to make sure the visitor page requests are routed to the same server in any browsing session.
cf_use_obpastCloudflare sets this cookie to improve page load times and to disallow any security restrictions based on the visitor's IP address.
cookielawinfo-checbox-analytics11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checbox-functional11 monthsThe cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checbox-others11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-advertisement1 yearSet by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Advertisement" category .
cookielawinfo-checkbox-necessary11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-performance11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy11 monthsThe cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.

Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.

CookieDurationDescription
__cf_bm30 minutesThis cookie, set by Cloudflare, is used to support Cloudflare Bot Management.
bcookie2 yearsLinkedIn sets this cookie from LinkedIn share buttons and ad tags to recognize browser ID.
bscookie2 yearsLinkedIn sets this cookie to store performed actions on the website.
langsessionLinkedIn sets this cookie to remember a user's language setting.
lidc1 dayLinkedIn sets the lidc cookie to facilitate data center selection.
UserMatchHistory1 monthLinkedIn sets this cookie for LinkedIn Ads ID syncing.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

CookieDurationDescription
_gat1 minuteThis cookie is installed by Google Universal Analytics to restrain request rate and thus limit the collection of data on high traffic sites.
_uetsid1 dayBing Ads sets this cookie to engage with a user that has previously visited the website.
_uetvid1 year 24 daysBing Ads sets this cookie to engage with a user that has previously visited the website.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.

CookieDurationDescription
_ga2 yearsThe _ga cookie, installed by Google Analytics, calculates visitor, session and campaign data and also keeps track of site usage for the site's analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognize unique visitors.
_gat_UA-8508435-11 minuteA variation of the _gat cookie set by Google Analytics and Google Tag Manager to allow website owners to track visitor behaviour and measure site performance. The pattern element in the name contains the unique identity number of the account or website it relates to.
_gcl_au3 monthsProvided by Google Tag Manager to experiment advertisement efficiency of websites using their services.
_gid1 dayInstalled by Google Analytics, _gid cookie stores information on how visitors use a website, while also creating an analytics report of the website's performance. Some of the data that are collected include the number of visitors, their source, and the pages they visit anonymously.
_hjAbsoluteSessionInProgress30 minutesHotjar sets this cookie to detect the first pageview session of a user. This is a True/False flag set by the cookie.
_hjFirstSeen30 minutesHotjar sets this cookie to identify a new user’s first session. It stores a true/false value, indicating whether it was the first time Hotjar saw this user.
_hjIncludedInPageviewSample2 minutesHotjar sets this cookie to know whether a user is included in the data sampling defined by the site's pageview limit.
_hjIncludedInSessionSample2 minutesHotjar sets this cookie to know whether a user is included in the data sampling defined by the site's daily session limit.
_hjTLDTestsessionTo determine the most generic cookie path that has to be used instead of the page hostname, Hotjar sets the _hjTLDTest cookie to store different URL substring alternatives until it fails.
CONSENT2 yearsYouTube sets this cookie via embedded youtube-videos and registers anonymous statistical data.
MR7 daysThis cookie, set by Bing, is used to collect user information for analytics purposes.
utm_campaign2 monthsGoogle Ad Services sets this cookie to store session campaign value if present.
utm_content2 monthsThis cookie is used for storing the session content value if present.
utm_source2 monthsThis cookie is used to record from where the visitor came to the website orginally. This information is used by the website operator to know the efficiency of their marketing.
utm_term2 monthsThis cookie is used to record from where the visitor came to the website orginally. This information is used by the website operator to know the efficiency of their marketing.
vuid2 yearsVimeo installs this cookie to collect tracking information by setting a unique ID to embed videos to the website.

Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.

CookieDurationDescription
_fbp3 monthsThis cookie is set by Facebook to display advertisements when either on Facebook or on a digital platform powered by Facebook advertising, after visiting the website.
_mkto_trk2 yearsThis cookie, provided by Marketo, has information (such as a unique user ID) that is used to track the user's site usage. The cookies set by Marketo are readable only by Marketo.
fr3 monthsFacebook sets this cookie to show relevant advertisements to users by tracking user behaviour across the web, on sites that have Facebook pixel or Facebook social plugin.
IDE1 year 24 daysGoogle DoubleClick IDE cookies are used to store information about how the user uses the website to present them with relevant ads and according to the user profile.
MUID1 year 24 daysBing sets this cookie to recognize unique web browsers visiting Microsoft sites. This cookie is used for advertising, site analytics, and other operations.
personalization_id2 yearsTwitter sets this cookie to integrate and share features for social media and also store information about how the user uses the website, for tracking and targeting.
test_cookie15 minutesThe test_cookie is set by doubleclick.net and is used to determine if the user's browser supports cookies.
utm_medium2 monthsThis cookie is used to record from where the visitor came to the website orginally. This information is used by the website operator to know the efficiency of their marketing.
VISITOR_INFO1_LIVE5 months 27 daysA cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface.
YSCsessionYSC cookie is set by Youtube and is used to track the views of embedded videos on Youtube pages.
yt-remote-connected-devicesneverYouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
yt-remote-device-idneverYouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
yt.innertube::nextIdneverThis cookie, set by YouTube, registers a unique ID to store data on what videos from YouTube the user has seen.
yt.innertube::requestsneverThis cookie, set by YouTube, registers a unique ID to store data on what videos from YouTube the user has seen.

Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.

CookieDurationDescription
_hjSession_253745030 minutesNo description
_hjSessionUser_25374501 yearNo description
AnalyticsSyncHistory1 monthNo description
BIGipServersn-mch-v2-80sessionNo description
BIGipServersn02web-nginx-app_httpssessionNo description
ib_last_referrer2 monthsNo description
incap_ses_1319_2167377sessionNo description
li_gc2 yearsNo description
muc_ads2 yearsNo description
nlbi_2167377sessionNo description
original_req_urlpastNo description
referrer66_00f1 monthNo description
visid_incap_21673771 yearNo description
visitorId1 yearNo description
Top Articles
Latest Posts
Article information

Author: Msgr. Benton Quitzon

Last Updated: 03/21/2023

Views: 6387

Rating: 4.2 / 5 (43 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Msgr. Benton Quitzon

Birthday: 2001-08-13

Address: 96487 Kris Cliff, Teresiafurt, WI 95201

Phone: +9418513585781

Job: Senior Designer

Hobby: Calligraphy, Rowing, Vacation, Geocaching, Web surfing, Electronics, Electronics

Introduction: My name is Msgr. Benton Quitzon, I am a comfortable, charming, thankful, happy, adventurous, handsome, precious person who loves writing and wants to share my knowledge and understanding with you.