Задачи MSBuild
Платформе построения требуется возможность выполнения любого числа действий во время процесса построения.Для выполнения этих действий в 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.
Переопределенные задачи
MSBuild выполняет поиск задач в нескольких местоположениях.Первое местоположение находится в файлах с расширением .OverrideTasks, хранящихся в каталогах платформы .NET Framework.Задачи в этих файлах переопределяют любые другие задачи с такими же именами, в том числе задачи в файле проекта.Второе местоположение находится в файлах с расширением .Tasks в каталогах платформы .NET Framework.Если задача не обнаружена в одном из этих местоположений, используется задача в файле проекта.