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.