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


Общие сведения о MSBuild

Обновлен: Ноябрь 2007

Microsoft Build Engine (MSBuild) — это новая платформа построений для программного обеспечения Майкрософт и Visual Studio. MSBuild полностью прозрачна в отношении обработки и сборки программного обеспечения, что позволяет разработчикам планировать и создавать программные продукты в лабораторных средах сборки без установки Visual Studio. В данном разделе предоставляется краткий обзор следующих тем:

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

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

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

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

Файл проекта

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

Элементы

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

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

<ItemGroup>
    <Compile Include = "file1.cs"/>
    <Compile Include = "file2.cs"/>
</ItemGroup>

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

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

Свойства

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

  • Элементы сохраняются в наборах, а свойства содержат одно скалярное значение.

  • Элементы нельзя удалить из наборов элементов, а значения свойств можно изменить после определения.

  • Элементы могут содержать метаданные и использовать представление %(ItemMetadata), а свойства не могут.

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

<PropertyGroup>
    <BuildDir>Build</BuildDir>
</PropertyGroup>

Для ссылки на свойства в файле проекта используется синтаксис $(PropertyName). Например, ссылка на свойство в приведенном ранее примере выглядит следующим образом: $(BuildDir). Дополнительные сведения о свойствах см. в разделе Свойства 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.exe с использованием соответствующих параметров командной строки. С помощью параметров командной строки можно задавать свойства, выполнять определенные целевые объекты и указывать средства ведения журнала. Например, используя следующий синтаксис командной строки, можно создать файл MyProj.proj со свойством Configuration, для которого задается значение Debug.

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

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

ms171452.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

Прежде чем создавать загружаемый проект, определите уровень доверия кода. В файлах проекта MSBuild возможно выполнение задач, которые могут повредить систему.

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

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

Интеграция Visual Studio

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

См. также

Основные понятия

MSBuild

Цели MSBuild

Задачи MSBuild

Элементы MSBuild

Свойства MSBuild

Пакетная обработка в MSBuild

Общие сведения о средстве ведении журнала в MSBuild

Преобразования MSBuild

Интеграция Visual Studio (MSBuild)

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

Другие ресурсы

Справочные сведения о MSBuild

Справочные сведения о задачах MSBuild