...

Microsoft build что это за программа

Understanding Microsoft Build System – What is MSBuild

MSBuild is perhaps one of the most used but uncredited piece of technology. The Microsoft Build Engine or more known as MSBuild, is a platform for building applications. Chances are that if you have ever used Visual Studio or compiled a .NET based project, you have used it knowingly or un-knowingly. Visual Studio uses MSBuild, but it doesn’t 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 is not installed. For MSBuild to work properly, you need to use an XML schema that defines how the build platform processes and builds software.

In this blog post, we’ll learn just basics of MSBuild, understanding what it is. Through a series of upcoming posts, we’ll learn how to use the XML schema so that MSBuild can build software as per our needs.

As we discussed above, 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:

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.

Использование API MSBuild

MSBuild предоставляет общедоступный интерфейс API, который позволяет программам выполнять сборку и проверять проекты. Последние версии API MSBuild можно найти в следующих пакетах NuGet:

Имя пакета Description
Microsoft.Build Содержит сборку Microsoft.Build, которая используется для создания, изменения и вычисления проектов MSBuild.
Microsoft.Build.Framework Содержит общую сборку платформы MSBuild, используемую другими сборками MSBuild.
Microsoft.Build.Runtime Предоставляет полную исполняемую копию MSBuild. Ссылаться на этот пакет следует только в том случае, если приложению требуется загружать проекты или выполнять внутрипроцессные сборки без установки MSBuild. Для успешного вычисления проектов, использующих этот пакет, необходимо выполнить статистическую обработку дополнительных компонентов (например, компиляторов) в каталоге приложения.
Microsoft.Build.Tasks.Core Содержит сборку Microsoft.Build.Tasks, которая реализует часто используемые задачи MSBuild.
Microsoft.Build.Utilities.Core Содержит сборку Microsoft.Build.Utilities, которая используется для реализации пользовательских задач MSBuild.

Кроме того, NuGet также содержит устаревшую сборку Microsoft.Build.Engine, использовать которую не рекомендуется.

Существует несколько различных версий API MSBuild, а для версий 15 и 16 существует две различные формы сборок в пакетах NuGet, одна из которых компилируется с .NET Framework, а другая — с .NET Core, который является подмножеством API .NET Framework. Версия .NET Core MSBuild используется при вызове команды dotnet и при использовании MSBuild в системах Mac и Linux.

Документацию по API MSBuild можно найти с помощью Браузера .NET API или в списке пространств имен, приведенных ниже.

Пространство имен Применяется к Description
Microsoft.Build.Construction Все Содержит типы, используемые объектной моделью MSBuild для создания корней проекта с невычисленными значениями. Каждый корень проекта соответствует файлу проекта или файлу целей построения.
Microsoft.Build.Definition Все Содержит класс ProjectOptions , поддерживающий создание проекта.
Microsoft.Build.Evaluation Все Содержит типы, используемые объектной моделью MSBuild для вычисления проектов. Каждый проект связан с одним или несколькими корнями проекта.
Microsoft.Build.Evaluation.Context Все Содержит класс EvaluationContext , используемый для хранения состояния вычисления во всех вызовах.
Microsoft.Build.Exceptions Все Содержит типы исключений, которые могут выдаваться в процессе сборки.
Microsoft.Build.Execution Все Содержит типы, используемые объектной моделью MSBuild для создания проектов.
Microsoft.Build.Framework Все Содержит типы, определяющие, каким образом задачи и средства ведения журнала взаимодействуют с обработчиком MSBuild.
Microsoft.Build.Framework.Profiler Все Содержит типы, поддерживающие профилирование производительности.
Microsoft.Build.Framework.XamlTypes Только .NET Framework Содержит классы, используемые для представления типов XAML, полученных в результате анализа файлов, правил и других источников.
Microsoft.Build.Globbing Все Содержит классы, поддерживающие обработку подстановочных знаков.
Microsoft.Build.Globbing.Extensions Все Содержит типы, поддерживающие расширения для обработки подстановочных знаков.
Microsoft.Build.Graph Все Содержит типы, поддерживающие параметр -graph MSBuild.
Microsoft.Build.Logging Все Содержит типы, используемые для регистрации хода выполнения сборки.
Microsoft.Build.ObjectModelRemoting Все Содержит типы, поддерживающие удаленное взаимодействие в MSBuild.
Microsoft.Build.Tasks Все Содержит реализацию всех задач, поставляемых с MSBuild.
Microsoft.Build.Tasks.Deployment.Bootstrapper Только .NET Framework Содержит классы, используемые внутри MSBuild.
Microsoft.Build.Tasks.Deployment.ManifestUtilities Только .NET Framework Содержит классы, используемые MSBuild.
Microsoft.Build.Tasks.Hosting Все Содержит классы, используемые внутри MSBuild.
Microsoft.Build.Tasks.Xaml Только .NET Framework Содержит классы, связанные с задачами сборки XAML.
Microsoft.Build.Utilities Все Содержит вспомогательные классы, которые можно использовать для создания собственных средств ведения журнала и задач MSBuild.

В приведенной выше таблице «Все» в столбце «Применение» означает, что типы в пространстве имен доступны как в .NET Framework, так и в версиях .NET Core для API MSBuild.

Saved searches

Use saved searches to filter your results more quickly

Cancel Create saved search

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

dotnet / msbuild Public

The Microsoft Build Engine (MSBuild) is the build platform for .NET and Visual Studio.

License

dotnet/msbuild

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

  • Local
  • Codespaces

HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

caf06d1 Sep 12, 2023

Git stats

Files

Failed to load latest commit information.

Latest commit message
Commit time

README.md

The Microsoft Build Engine is a platform for building applications. This engine, 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 can run without 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 docs.microsoft.com.

The changelog has detailed information about changes made in different releases.

Building MSBuild with Visual Studio 2022 on Windows

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

To get started on Visual Studio 2022:

  1. Install Visual Studio 2022. Select the following Workloads:
  • .NET desktop development
  • .NET Core cross-platform development
  1. Ensure long path support is enabled at the Windows level.
  2. Open a Developer Command Prompt for VS 2022 prompt.
  3. Clone the source code: git clone https://github.com/dotnet/msbuild
  • You may have to download Git first.
  1. Run .\build.cmd from the root of the repo to build the code. This also restores packages needed to open the projects in Visual Studio.
  2. Open MSBuild.sln or MSBuild.Dev.slnf in Visual Studio 2022.

This newly-built MSBuild will be located at artifacts\bin\bootstrap\net472\MSBuild\Current\Bin\MSBuild.exe . It may not work for all scenarios, including C++ builds.

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

Interested in contributing?

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

  • Contributing Guide
  • Developer Guide on:
    • .NET Core
    • Full Framework
    • Mono
    • Note: Please leave a comment asking to be assigned the issue if you want to work on it.

    Other ways to contribute

    We encourage any contributions you decide to make to the repo!

    • 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.

    About

    The Microsoft Build Engine (MSBuild) is the build platform for .NET and Visual Studio.

    При подготовке материала использовались источники:

    Understanding Microsoft Build System – What is MSBuild


    https://learn.microsoft.com/ru-ru/visualstudio/msbuild/msbuild-api?view=vs-2022
    https://github.com/dotnet/msbuild

Оцените статью