tarefas MSBuild

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

Lógica da tarefa

o formato de arquivo de projeto XML MSBuild não pode executar operações de compilação por conta própria, portanto, a lógica de tarefa deve ser implementada fora do arquivo de projeto.

A lógica de execução de uma tarefa é implementada como uma classe do .NET que implementa a interface ITask, que é definida no namespace Microsoft.Build.Framework.

A classe de tarefa também define os parâmetros de entrada e saída disponíveis para a tarefa no arquivo de projeto. Todas as propriedades não-abstratas não estáticas de tabela pública expostas pela classe Task podem receber valores no arquivo de projeto colocando um atributo correspondente com o mesmo nome no elemento Task e definindo seu valor, conforme mostrado nos exemplos mais adiante neste artigo.

Você pode escrever sua própria tarefa por meio da criação de uma classe gerenciada que implementa a interface ITask. Para obter mais informações, consulte gravação de tarefas.

Executar uma tarefa de um arquivo de projeto

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

para executar uma tarefa em um arquivo de projeto MSBuild, 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.

MSBuild listas de itens e propriedades podem ser usadas como parâmetros. Por exemplo, o código a seguir chama a MakeDir tarefa e define o valor da Directories Propriedade do MakeDir objeto igual ao valor da BuildDir Propriedade:

<Target Name="MakeBuildDirectory">
    <MakeDir
        Directories="$(BuildDir)" />
</Target>

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

<Target Name="CopyFiles">
    <Copy
        SourceFiles="@(MySourceFiles)"
        DestinationFolder="@(MyDestFolder)">
        <Output
            TaskParameter="CopiedFiles"
            ItemName="SuccessfullyCopiedFiles"/>
     </Copy>
</Target>

Tarefas incluídas

o MSBuild é fornecido com muitas tarefas, como Copy, que copia arquivos, MakeDir, que cria diretórios e Csc, que compila arquivos de código-fonte C#. Para obter uma lista completa de tarefas disponíveis e informações de uso, consulte referência de tarefas.

Tarefas substituídas

MSBuild procura tarefas em vários locais. O primeiro local está em arquivos com a extensão . OverrideTasks armazenados nos diretórios .NET Framework. As tarefas nesses arquivos substituem quaisquer outras tarefas com os mesmos nomes, incluindo tarefas no arquivo de projeto. O segundo local está nos arquivos com a extensão .Tasks nos diretórios do .NET Framework. Se a tarefa não for encontrada em um desses locais, a tarefa no arquivo de projeto será usada.

Confira também