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


Задачи 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.

См. также

Задачи

Практическое руководство. Написание задачи

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

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

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

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