Compartilhar via


Tarefas do MSBuild

Uma plataforma de build precisa da capacidade de executar várias ações durante o processo de build. O 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 build atômicas.

Lógica da tarefa

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

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

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 estáticas não abstratas não estáticas públicas expostas pela classe de tarefa 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 posteriormente neste artigo.

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

Executar uma tarefa de 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 UsingTask . Isso permite que o MSBuild saiba onde procurar a lógica de execução da tarefa quando ela a encontrar no arquivo de projeto.

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

As listas de itens e as propriedades do MSBuild 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 Copy tarefa e armazena as informações da propriedade de CopiedFiles saída na SuccessfullyCopiedFiles lista de itens.

<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 Copiar, 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 tarefa.

Tarefas substituídas

O MSBuild procura tarefas em vários locais. O primeiro local está em arquivos com a extensão .OverrideTasks armazenada no diretório MSBuild. As tarefas nesses arquivos substituem quaisquer outras tarefas com os mesmos nomes, incluindo tarefas no arquivo de projeto. O segundo local está no arquivo de projeto e suas importações. Se a tarefa não estiver definida no projeto, ela será pesquisada nas tarefas padrão do MSBuild que são definidas em um .tasks arquivo no diretório MSBuild.