Общие сведения о 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.
Примечание о безопасности. |
---|
Прежде чем создавать загружаемый проект, определите уровень доверия кода. В файлах проекта MSBuild возможно выполнение задач, которые могут повредить систему. |
Дополнительные возможности
MSBuild можно использовать для выполнения в ходе построения дополнительных операций, таких как вывод ошибок, предупреждений и сообщений на консоль или в другие средства ведения журнала, выполнение анализа зависимостей в целевых объектах, а также пакетная обработка задач и целевых объектов в соответствии с метаданными элементов. Дополнительные сведения об этих возможностях см. в разделе Дополнительные возможности MSBuild.
Интеграция Visual Studio
В Visual Studio используется формат файла проекта MSBuild для хранения данных построения об управляемых объектах. Параметры проекта, добавленные и измененные в Visual Studio, отражаются в файле .*proj, который создается для каждого проекта. В Visual Studio используется размещенный экземпляр MSBuild для сборки управляемых проектов, то есть управляемый проект можно создать в Visual Studio и из командной строки (даже без установки Visual Studio) с одинаковыми результатами. Дополнительные сведения об использовании MSBuild в Visual Studio см. в разделе Дополнительные возможности MSBuild.
См. также
Основные понятия
Общие сведения о средстве ведении журнала в MSBuild
Интеграция Visual Studio (MSBuild)
Справочные сведения о схеме файлов проектов MSBuild