MSBuild

Microsoft Build Engine (MSBuild) представляет собой платформу для построения приложений. MSBuild обеспечивает для файла проекта схему XML, которая управляет способами обработки и построения приложений платформой построения. Хотя платформа MSBuild встроена в Visual Studio, она не зависит от него. Разработчики могут планировать и создавать продукты в средах без установленного Visual Studio.

В этом разделе представлен обзор MSBuild.

  • Основные элементы файла проекта MSBuild.

  • Использование MSBuild для создания проектов.

  • Дополнительные возможности MSBuild.

  • Использование MSBuild в Visual Studio для создания проектов.

  • Вводное руководство см. в разделе Пошаговое руководство. Использование MSBuild.

Файл проекта

MSBuild использует открытый и расширяемый формат файла проекта, основанный на XML. Формат файла проекта MSBuildпозволяет разработчикам описывать создаваемые элементы, а также способы их построения для разных операционных систем и конфигураций. Кроме того, формат файла проекта позволяет разработчикам создавать многократно используемые правила построения, которые можно разложить на отдельные файлы, чтобы построения могли выполняться единообразно в различных проектах в составе соответствующего продукта.

В следующих разделах описаны некоторые из основных элементов формата файлов проекта MSBuild. Для обучения созданию основных файлов проекта см. раздел Пошаговое руководство. Создание файла проекта MSBuild с нуля.

Свойства

Свойства представляют пары ключ-значение, с помощью которых выполняется настройка построения. Для объявления свойств создается элемент с именем свойства, который является дочерним по отношению к элементу PropertyGroup. Например, в следующем коде создается свойство BuildDir со значением Build.

<PropertyGroup>

<BuildDir>Build</BuildDir>

</PropertyGroup>

Для ссылки на свойства в файле проекта используется синтаксис $(PropertyName). Например, ссылка на свойство из этого примера создается с помощью выражения $(BuildDir). Дополнительные сведения о свойствах см. в разделе Свойства MSBuild.

Items

Элементы — входные данные для системы построения, как правило, представляющие файлы. Элементы группируются в типы на основе определяемых пользователем имен элементов. Эти типы элементов можно использовать в качестве параметров для задач, в которых с помощью отдельных элементов выполняются этапы процесса построения.

Для объявления элементов в файле проекта создается элемент с именем типа элементов, являющийся дочерним по отношению к элементу ItemGroup. Например, с помощью приведенного ниже кода создается тип элементов с именем Compile, в который входят два файла.

<ItemGroup>

<Compile Include = "file1.cs"/>

<Compile Include = "file2.cs"/>

</ItemGroup>

Для ссылки на типы элементов в файле проекта используется синтаксис @(ItemType). Например, ссылка на тип элементов в этом примере выглядела бы следующим образом: @(Compile).

При объявлении элементов можно использовать подстановочные знаки; элементы могут содержать дополнительные метаданные для расширенных сценариев построения. Дополнительные сведения об элементах см. в разделе Элементы MSBuild.

Задачи

Задачи — это блоки исполняемого кода, с помощью которых в проектах MSBuild выполняются операции построения. Например, в задаче может выполняться компиляция входных файлов или запускаться внешняя программа. Созданные задачи могут использоваться совместно и многократно разными разработчиками в различных проектах.

Логика выполнения задачи записана в управляемом коде и сопоставлена с MSBuild с помощью элемента UsingTask. Для создания собственной задачи можно разработать управляемый тип, реализующий интерфейс ITask. Дополнительные сведения о способах создания задач см. в разделе Написание задач.

MSBuild содержит общие задачи, которые можно изменять в зависимости от предъявляемых требований, например: Copy копирует файлы, MakeDir создает каталоги, а Csc компилирует файлы с исходным кодом Visual C#. Список доступных задач и информацию об их использовании см. в разделе Справочные сведения о задачах MSBuild.

Задача выполняется в файле проекта MSBuild путем создания элемента с именем задачи в виде дочернего элемента по отношению к элементу Target. Задачи, как правило, принимают параметры, которые передаются как атрибуты элемента. В качестве параметров можно использовать свойства и элементы MSBuild. Например, с помощью следующего кода вызывается задача MakeDir и ей передается значение свойства BuildDir, объявленного в предыдущем примере.

<Target Name="MakeBuildDirectory">

<MakeDir Directories="$(BuildDir)" />

</Target>

Дополнительные сведения о задачах см. в разделе Задачи MSBuild.

целевые объекты

Целевые объекты позволяют группировать задачи в определенном порядке и использовать разделы файла проекта в качестве точек входа в процесс построения. целевые объекты часто группируются в логические разделы, чтобы повысить удобочитаемость и расширяемость. Благодаря разбиению действий построения на множество целевых объектов можно вызывать один фрагмент процесса построения из других целевых объектов, не создавая при этом копии соответствующего раздела кода в каждом целевом объекте. Например, если требуется создать ссылки для нескольких точек входа в процесс построения, можно создать целевой объект, который выполняет построение ссылок, и выполнять этот целевой объект из каждой нужной точки входа.

целевые объекты указываются в файле проекта с помощью элемента Target. Например, с помощью следующего кода создается целевой объект с именем Compile, который затем вызывает задачу Csc со списком элементов, объявленным в предыдущем примере.

<Target Name="Compile">

<Csc Sources="@(Compile)" />

</Target>

В развернутых сценариях целевые объекты могут использоваться для описания связей друг с другом и выполнять анализ зависимости, что позволяет пропускать целые разделы процесса построения, если такой целевой объект актуален. Дополнительную информацию о целях см. в разделе Цели MSBuild.

Условные элементы

Многие элементы MSBuild определяются условно, т.е. в элементе появляется атрибут Condition. Содержимое условных элементов игнорируется, пока значение условия не станет true. Например:

<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>

означает: "Если свойство Configuration еще не определено, определите его и присвойте значение Debug.

Практически у всех элементов MSBuild может быть атрибут Condition. Дополнительные сведения см. в разделе Условия MSBuild.

Учет регистра

Схема XML MSBuild удовлетворяет правилам XML. Для имен элементов и атрибутов учитывается регистр. Однако для имен свойств, элементов и метаданных в объектной модели MSBuild регистр не учитывается. Рассмотрим следующую группу элементов:

<ItemGroup>

<Compile Include="one.cs" />

<comPile Include="two.cs" />

</ItemGroup>

При этом создается тип элементов Compile или comPile либо любой другой вариант и ему присваивается значение "one.cs;two.cs".

Использование MSBuild в командной строке

Чтобы запустить MSBuild из командной строки, передайте файл проекта в MSBuild.exe с использованием соответствующих параметров командной строки. Параметры командной строки позволяют задавать свойства, выполнять определенные целевые объекты и задавать другие параметры, управляющие процессом построения. Например, используя следующий синтаксис командной строки, можно создать файл MyProj.proj со свойством Configuration, для которого задается значение Debug.

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

Дополнительные сведения о параметрах командной строки MSBuild см. в разделе Справочные сведения о командной строке MSBuild

Примечание о безопасностиПримечание по безопасности

Перед загрузкой проекта определите, можно ли доверять коду.

Дополнительные возможности

MSBuild также можно использовать для выполнения других операций, таких как вывод ошибок, предупреждений и сообщений на консоль или в устройства вывода, выполнение анализа зависимостей в целевых объектах, а также пакетная обработка задач и целевых объектов в соответствии с метаданными элементов. Дополнительные сведения об этих дополнительных возможностях см. в разделе Дополнительные возможности MSBuild.

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

В Visual Studio используется формат файла проекта MSBuild для хранения данных построения об управляемых объектах. Параметры проекта, добавленные или измененные с помощью интерфейса Visual Studio, отражаются в PROJ-файле, который создается для каждого проекта. Для построения управляемых проектов в Visual Studio используется размещенный экземпляр MSBuild. Это означает, что управляемый проект можно создать в Visual Studio или в командной строке (даже при отсутствии Visual Studio), и результаты будут одинаковыми.

Руководство по использованию MSBuild в Visual Studio см. в разделе Пошаговое руководство. Использование MSBuild.

Настройка для различных версий

С помощью Visual Studio можно компилировать приложение для его запуска на любой из нескольких версий платформы .NET Framework. Например, можно компилировать приложение для запуска на платформе .NET Framework версии 2.0, а также компилировать то же приложение для запуска на платформе .NET Framework версии 4. Возможность компиляции для нескольких платформ называется настройкой для различных версий.

Ниже приведены несколько преимуществ настройки для различных версий:

  • Можно разрабатывать приложения, которые предназначены для более ранних версий платформы .NET Framework, например версий 2.0, 3.0 и 3.5.

  • Можно ориентироваться на платформы, отличные от .NET Framework, например Silverlight Framework.

  • Можно ориентироваться на профиль платформы, который представляет собой предопределенное подмножество целевой платформы.

  • При выпуске пакетов обновления для платформы .NET Framework версии 4 можно ориентироваться на них.

  • Настройка для различных версий гарантирует, что приложение использует только те функциональные возможности, которые доступны в целевой версии .NET Framework.

  • Дополнительные сведения см. в разделе Настройка MSBuild для различных версий.

Связанные разделы

Заголовок

Описание

Пошаговое руководство. Создание файла проекта MSBuild с нуля

Содержит описание способов пошагового создания основного файла проекта путем использования только текстового редактора.

Пошаговое руководство. Использование MSBuild

Содержит вводную информацию о стандартных блоках MSBuild и описание способов записи, управления и отладки проектов MSBuild, не выходя из интегрированной среды разработки Visual Studio.

Основные возможности MSBuild

Содержит информацию о четырех стандартных блоках MSBuild: свойствах, элементах, целевых объектах и задачах.

Элементы MSBuild

Содержит описание общих понятий, относящихся к формату файлов MSBuild, и способов взаимодействия фрагментов.

Свойства MSBuild

Содержит вводную информацию о свойствах и коллекциях свойств. Свойства представляют собой пары ключ-значение, с помощью которых выполняется настройка сборок.

Цели MSBuild

Содержит объяснение группировки задач в определенном порядке и вызова разделов процесса построения из командной строки.

Задачи MSBuild

Описывает процесс создания блока исполняемого кода, с помощью которого MSBuild выполняет атомарные операции построения.

Условия MSBuild

Рассматривает использование атрибута Condition в элементе MSBuild.

Дополнительные возможности MSBuild

Содержит информацию о пакетной обработке, выполнении преобразований, контроле (ведении журнала) построения и других дополнительных возможностях.

Дополнительные ресурсы MSBuild

Содержит список ресурсов сообщества и службы поддержки с дополнительной информацией о MSBuild.

Ссылки