Поделиться через


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 и описание способов записи, управления и отладки проектов MSBuild без выхода из интегрированной среды разработки Visual Studio.

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

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

Элементы MSBuild

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

Свойства MSBuild

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

Цели MSBuild

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

Задачи MSBuild

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

Условия MSBuild

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

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

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

Ведение журнала в MSBuild

Описание возможностей записи в журнал событий, сообщений и ошибок сборки.

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

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

Ссылки