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


Задачи 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.Если задача не обнаружена в одном из этих местоположений, используется задача в файле проекта.

См. также

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

Написание задач

Встроенные задачи MSBuild

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

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

MSBuild