Tarefas do MSBuild
Uma plataforma de compilação precisa da capacidade de executar qualquer número de ações durante o processo de compilação. usa tarefas deMSBuild executar essas ações. Uma tarefa é uma unidade de código executável usada por MSBuild para executar operações atômicas de compilação.
Lógica de tarefas
O formato de arquivo de projeto de MSBuild XML não pode totalmente executar operações de compilação na própria, o que a lógica de tarefa deve ser implementado fora do arquivo de projeto.
A lógica de execução de uma tarefa é implementada como uma classe .NET que implementa a interface de ITask , que é definido no namespace de Microsoft.Build.Framework .
A classe também define a tarefa de entrada e parâmetros de saída disponíveis para a tarefa no arquivo de projeto. Todas as propriedades configuráveis públicas não abstratas não-estático expostos pela classe de tarefas podem ser acessadas no arquivo de projeto colocando um atributo correspondente com o mesmo nome no elemento de tarefa .
Você pode escrever sua própria tarefa criando uma classe gerenciada que implementa a interface de ITask . Para obter mais informações, consulte Escrevendo tarefas.
Executar uma tarefa um Arquivo de projeto
Antes de executar uma tarefa no arquivo de projeto, primeiro você deve mapear o tipo no assembly que implementa a tarefa para o nome da tarefa com o elemento de UsingTask . Isso permite MSBuild saber onde procurar a lógica de execução da sua tarefa quando encontra no arquivo de projeto.
Para executar uma tarefa em um arquivo de projeto de MSBuild , crie um elemento com o nome da tarefa como um filho de um elemento de Target . Se uma tarefa aceita parâmetros, elas são passados como atributos do elemento.
as listas e propriedades de item deMSBuild podem ser usadas como parâmetros. Por exemplo, o código a seguir chama a tarefa de MakeDir e definir o valor da propriedade de Directories do objeto de MakeDir igual ao valor da propriedade de BuildDir declarada no exemplo anterior.
<Target Name="MakeBuildDirectory">
<MakeDir
Directories="$(BuildDir)" />
</Target>
As tarefas também podem retornar informações para o arquivo de projeto, que pode ser armazenado nos itens ou em propriedades para uso posterior. Por exemplo, o código a seguir chama a tarefa de Copy e armazena informações de propriedade de saída de CopiedFiles na lista de itens de SuccessfullyCopiedFiles .
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="@(MyDestFolder)">
<Output
TaskParameter="CopiedFiles"
ItemName="SuccessfullyCopiedFiles"/>
</Copy>
</Target>
Tarefas envolvidas
o vem deMSBuild com várias tarefas como Copiar, que copia arquivos, MakeDir, que cria pastas, e CSC, que compila arquivos de código-fonte de Visual C# . Para obter uma lista completa das tarefas disponíveis e informações de uso, consulte Referência das tarefas do MSBuild.
tarefas substituídas
MSBuild procurar tarefas em vários locais. O primeiro local está em arquivos com a extensão .OverrideTasks armazenadas nos diretórios do .NET Framework. As tarefas em esses arquivos substituem quaisquer outras tarefas com os mesmos nomes, incluindo tarefas no arquivo de projeto. O segundo local está em arquivos com a extensão. Tarefas nas pastas do .NET Framework. Se a tarefa não for encontrada em nenhum de esses locais, a tarefa no arquivo de projeto é usada.