Compartilhar via


Tarefas do MSBuild

Uma plataforma de compilação precisa a capacidade de executar qualquer número de ações durante o processo de compilação. MSBuildusa tarefas para executar essas ações. Uma tarefa é uma unidade de código executável usado por MSBuild para executar operações de compilação atômica.

Lógica de tarefa

O MSBuild formato de arquivo de projeto XML totalmente não é possível executar operações de compilação em sua própria forma de lógica de tarefa deve ser implementada fora do arquivo de projeto.

A lógica de execução de uma tarefa é implementada como um.NET classe que implementa o ITask interface, que é definido na Microsoft.Build.Framework namespace.

A classe de tarefas também define os parâmetros de entrada e saídos disponíveis para a tarefa no arquivo de projeto. Todas as definíveis non-static non-abstract propriedades públicas expostas pela classe tarefa podem ser acessadas no arquivo de projeto, colocando um atributo correspondente com o mesmo nome na tarefa elemento.

Você pode escrever sua própria tarefa criando uma classe gerenciada que implementa o ITask interface. Para obter mais informações, consulte Escrita de tarefa.

Executar uma tarefa a partir de um arquivo de projeto

Antes de executar uma tarefa em seu arquivo de projeto, primeiro você deve mapear o tipo no assembly que implementa a tarefa para o nome da tarefa com o UsingTask elemento. Isso permite que MSBuild saber onde procurar a lógica de execução da tarefa quando encontrá-lo no seu arquivo de projeto.

Para executar uma tarefa em um MSBuild arquivo de projeto, crie um elemento com o nome da tarefa como um filho de um Target elemento. Se uma tarefa aceita parâmetros, eles são passados como atributos do elemento.

MSBuilditem listas e propriedades podem ser usadas como parâmetros. Por exemplo, o seguinte código chama o MakeDir tarefa e define o valor da Directories propriedade da MakeDir objeto igual ao valor da BuildDir propriedade declarada no exemplo anterior.

<Target Name="MakeBuildDirectory">

<MakeDir

Directories="$(BuildDir)" />

</Target>

As tarefas também podem retornar informações ao arquivo de projeto pode ser armazenado em itens ou propriedades para uso posterior. Por exemplo, o seguinte código chama o Copy de tarefas e armazena as informações do CopiedFiles propriedade de saída a SuccessfullyCopiedFiles item de lista.

<Target Name="CopyFiles">

<Copy

SourceFiles="@(MySourceFiles)"

DestinationFolder="@(MyDestFolder)">

<Output

TaskParameter="CopiedFiles"

ItemName="SuccessfullyCopiedFiles"/>

</Copy>

</Target>

Tarefas incluídas

MSBuildvem com muitas tarefas, como Copy, que copia arquivos, MakeDir, que cria os diretórios, e Csc, que compila Visual C# arquivos de código de origem. Para obter uma lista completa de tarefas disponíveis e informações de uso, consulte Referência de tarefa do MSBuild.

Tarefas substituídas

MSBuildprocura por tarefas em vários locais. A primeira localização é em arquivos com a extensão.OverrideTasks é armazenado nas.Diretórios do NET Framework. Tarefas nesses arquivos substituem as tarefas com os mesmos nomes, incluindo tarefas no arquivo de projeto. O segundo local é em arquivos com a extensão.Tarefas na.Diretórios do NET Framework. Se a tarefa não for encontrada em um desses locais, a tarefa no arquivo de projeto é usada.

Consulte também

Conceitos

Escrita de tarefa

Tarefas do MSBuild in-line

Outros recursos

MSBuild Concepts

MSBuild Overview