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