MSBuild
Microsoft Build Engine представляет собой платформу для сборки приложений. Компонент, также называемы MSBuild, обеспечивает для файла проекта схему XML, которая управляет способами обработки и сборки приложений платформой сборки. Visual Studio использует MSBuild, но MSBuild не зависит от Visual Studio. С помощью вызова msbuild.exe для файла проекта или решения можно осуществлять оркестрацию и построение продуктов в средах без установленного экземпляра Visual Studio.
Visual Studio использует MSBuild для загрузки и сборки управляемых проектов. Файлы проектов в Visual Studio (с расширением CSPROJ, VBPROJ, VCXPROJ) содержат код XML MSBuild, который выполняется при сборке проекта с помощью интегрированной среды разработки. Проекты Visual Studio импортируют все необходимые параметры и процессы сборки для выполнения стандартной работы по разработке, но их можно расширять и изменять в Visual Studio или в редакторе XML.
Дополнительные сведения о MSBuild для C++ см. в разделе MSBuild (Visual C++).
В следующих примерах показаны случаи, когда сборки можно запускать с помощью командной строки MSBuild, а не интегрированной среды разработки Visual Studio.
Среда Visual Studio не установлена.
Необходимо использовать 64-разрядную версию MSBuild. Эта версия MSBuild обычно не нужна, но она позволяет MSBuild обращаться к большему объему памяти.
Сборку требуется выполнять в нескольких процессах. Однако можно использовать интегрированную среду разработки, чтобы добиться того же результата для проектов на C++ и C#.
Требуется изменить систему сборки. Например, может потребоваться выполнить следующие действия:
предварительная обработка файлов перед их компиляцией;
копирование выходных данных сборки в другое место;
создание сжатых файлов из выходных данных сборки;
пост-обработка. Например, может потребоваться присвоить сборке другой номер версии.
Можно написать код в интегрированной среде разработки Visual Studio, но запускать сборку с помощью MSBuild. В качестве альтернативы можно выполнять сборку кода в интегрированной среде разработки на компьютере разработчика, но использовать командную строку MSBuild для сборки и интеграции кода, полученного от нескольких разработчиков.
Примечание
С помощью Team Foundation Build можно автоматически компилировать, тестировать и развертывать приложение.Система сборки может автоматически запускать сборку, когда разработчики возвращают код (например, как часть стратегии непрерывной интеграции) или по расписанию (например, выполнять ежедневную ночную тестовую сборку).Team Foundation Build компилирует код с использованием MSBuild.Для получения дополнительной информации см. Сборка приложения.
В этом разделе представлен обзор MSBuild. Вводное руководство см. в разделе Пошаговое руководство. Использование MSBuild.
Содержание раздела
Использование MSBuild в командной строке
Файл проекта
Свойства
Элементы
Задачи
целевые объекты
Журналы построений
Использование MSBuild в Visual Studio
Настройка для различных версий
Использование MSBuild в командной строке
Чтобы запустить MSBuild из командной строки, передайте файл проекта в MSBuild.exe с использованием соответствующих параметров командной строки. Параметры командной строки позволяют задавать свойства, выполнять определенные целевые объекты и задавать другие параметры, управляющие процессом построения. Например, используя следующий синтаксис командной строки, можно создать файл MyProj.proj со свойством Configuration, для которого задается значение Debug.
MSBuild.exe MyProj.proj /property:Configuration=Debug
Дополнительные сведения о параметрах командной строки MSBuild см. в разделе Справочник по командной строке MSBuild.
Примечание по безопасности |
---|
Перед загрузкой проекта определите, можно ли доверять коду. |
Файл проекта
MSBuild использует открытый и расширяемый формат файлов проекта на базе XML. Формат файла проекта MSBuildпозволяет разработчикам описывать создаваемые элементы, а также способы их построения для разных операционных систем и конфигураций. Кроме того, формат файла проекта позволяет разработчикам создавать многократно используемые правила сборки, которые можно разложить на отдельные файлы, чтобы сборки могли выполняться единообразно в различных проектах в составе соответствующего продукта.
В следующих разделах описаны некоторые из основных элементов формата файла проекта MSBuild. Руководство по созданию базовых файлов проектов см. в разделе Пошаговое руководство. Создание файла проекта MSBuild с нуля.
Свойства
Свойства представляют пары ключ-значение, с помощью которых выполняется настройка построения. Для объявления свойств создается элемент с именем свойства, который является дочерним по отношению к элементу PropertyGroup. Например, в следующем коде создается свойство BuildDir со значением Build.
<PropertyGroup>
<BuildDir>Build</BuildDir>
</PropertyGroup>
Свойство можно определить условно, задав атрибут Condition в элементе. Содержимое условных элементов игнорируется, пока значение условия не станет true. В следующем примере определяется элемент Configuration, если он еще не был определен.
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
Для обращения к свойствам в файле проекта используется синтаксис $(ИмяСвойства). Например, к свойствам из предыдущих примеров можно обращаться с помощью конструкций $(BuildDir) и $(Configuration).
Дополнительные сведения о свойствах см. в разделе Свойства MSBuild.
Элементы
Элементы — это входные данные для системы сборки, как правило, представляющие файлы. Элементы группируются в типы на основе определяемых пользователем имен элементов. Эти типы элементов можно использовать в качестве параметров для задач, в которых с помощью отдельных элементов выполняются этапы процесса построения.
Для объявления элементов в файле проекта создается элемент с именем типа элементов, являющийся дочерним по отношению к элементу ItemGroup. Например, с помощью приведенного ниже кода создается тип элементов с именем Compile, в который входят два файла.
<ItemGroup>
<Compile Include = "file1.cs"/>
<Compile Include = "file2.cs"/>
</ItemGroup>
Для обращения к типам элементов в файле проекта используется синтаксис @(ТипЭлемента). Например, ссылка на тип элементов в этом примере выглядела бы следующим образом: @(Compile).
В MSBuild имена элементов и атрибутов задаются с учетом регистра. А имена свойств, элементов (item) и метаданных — нет. В следующем примере создается тип элементов Compile, comPile или любого другого варианта написания, и типу элементов присваивается значение "one.cs;two.cs".
<ItemGroup>
<Compile Include="one.cs" />
<comPile Include="two.cs" />
</ItemGroup>
При объявлении элементов можно использовать подстановочные знаки; элементы могут содержать дополнительные метаданные для расширенных сценариев построения. Дополнительные сведения об элементах см. в разделе Элементы 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 и Ведение журнала в 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 на 32-разрядной платформе, а также компилировать то же приложение для запуска в .NET Framework 4.5 на 64-разрядной платформе. Возможность компиляции для нескольких платформ называется настройкой для различных версий.
Ниже приведены несколько преимуществ настройки для различных версий:
Можно разрабатывать приложения, которые предназначены для более ранних версий платформы .NET Framework, например версий 2.0, 3.0 и 3.5.
Можно ориентироваться на платформы, отличные от .NET Framework, например на Silverlight.
Можно ориентироваться на профиль платформы, который представляет собой предопределенное подмножество целевой платформы.
После появления пакета обновления для текущей версии .NET Framework можно выбрать его в качестве целевой платформы.
Поддержка различных платформ гарантирует, что приложение использует только те функциональные возможности, которые доступны в целевой версии .NET Framework и платформы.
Для получения дополнительной информации см. MSBuild: обзор настройки для различных версий.
Связанные разделы
Заголовок |
Описание |
---|---|
Пошаговое руководство. Создание файла проекта MSBuild с нуля |
Содержит описание способов пошагового создания основного файла проекта путем использования только текстового редактора. |
Содержит вводную информацию о стандартных блоках MSBuild и описание способов записи, управления и отладки проектов MSBuild без выхода из интегрированной среды разработки Visual Studio. |
|
Содержит информацию о четырех стандартных блоках MSBuild: свойствах, элементах, целевых объектах и задачах. |
|
Содержит описание общих понятий, относящихся к формату файлов MSBuild, и способов взаимодействия фрагментов. |
|
Содержит вводную информацию о свойствах и коллекциях свойств. Свойства представляют собой пары ключ-значение, с помощью которых выполняется настройка сборок. |
|
Содержит объяснение группировки задач в определенном порядке и вызова разделов процесса построения из командной строки. |
|
Описывает процесс создания блока исполняемого кода, с помощью которого MSBuild выполняет атомарные операции построения. |
|
Рассматривает использование атрибута Condition в элементе MSBuild. |
|
Содержит информацию о пакетной обработке, выполнении преобразований, использовании нескольких целевых платформ и других дополнительных возможностях. |
|
Описание возможностей записи в журнал событий, сообщений и ошибок сборки. |
|
Содержит список ресурсов сообщества и службы поддержки с дополнительной информацией о MSBuild. |
Ссылки
Справочные сведения о MSBuild
Содержит ссылки на разделы, содержащие справочную информацию.Глоссарий MSBuild
Содержит определения общих терминов MSBuild.