Задачи MSBuild
Обновлен: Ноябрь 2007
Платформе построения требуется возможность выполнения любого числа действий во время процесса построения. Для выполнения этих действий в MSBuild используются задачи. Задача — блок исполняемого кода, с помощью которого MSBuild выполняет атомарные операции построения.
Логика задач
Формат файла XML-проекта MSBuild не позволяет выполнять все операции, поэтому необходимо реализовать логику задач за пределами файла проекта.
Логика выполнения задачи реализована в виде класса .NET, обеспечивающего интерфейс ITask, который определен в пространстве имен Microsoft.Build.Framework.
Классом задач определяются также входные и выходные параметры, доступные задаче в файле проекта. Доступ ко всем открытым настраиваемым нестатическим, неабстрактным свойствам, представленным классом задач, может осуществляться в файле проекта путем помещения соответствующего атрибута с тем же именем для элемента Task.
Для создания собственной задачи можно разработать управляемый класс, реализующий интерфейс ITask. Дополнительные сведения см. в разделе Практическое руководство. Написание задачи.
Выполнение задачи из файла проекта
Прежде чем выполнять задачу в файле проекта, необходимо сначала сопоставить тип в сборке, реализующей задачу, с именем задачи с элементом UsingTask. Это указывает MSBuild, где искать логику выполнения задачи, когда задача обнаружена в файле проекта.
Чтобы выполнить задачу в файле проекта MSBuild, создайте элемент с именем задачи в качестве дочернего объекта элемента Target. Если задача принимает параметры, они передаются как атрибуты элемента.
В качестве параметров можно использовать наборы элементов и свойства MSBuild. Например, с помощью следующего кода вызывается задача MakeDir и задается значение свойства Directories объекта MakeDir, равное значению свойства BuildDir, объявленного в предыдущем примере.
<Target Name="MakeBuildDirectory">
<MakeDir
Directories="$(BuildDir)" />
</Target>
Задачи могут также возвращать в файл проекта информацию, которую можно сохранять в элементах и свойствах для последующего применения. Например, с помощью следующего кода вызывается задача Copy и сохраняется информация из свойства выходных данных CopiedFiles в наборе элементов SuccessfullyCopiedFiles.
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="@(MyDestFolder)">
<Output
TaskParameter="CopiedFiles"
ItemName="SuccessfullyCopiedFiles"/>
</Copy>
</Target>
Включенные задачи
MSBuild поставляется вместе с множеством задач, например Copy — копирование файлов, MakeDir — создание каталогов, Csc — компиляция файлов исходного кода Visual C#. Полный список доступных задач и информацию об их использовании см. в разделе Справочные сведения о задачах MSBuild.
См. также
Задачи
Практическое руководство. Написание задачи