Partilhar via


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. 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 compilação atômica.

Lógica da tarefa

O formato de arquivo de projeto XML do MSBuild não pode executar totalmente operações de compilação 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 públicas configuráveis, não estáticas, não abstratas, 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 criando uma classe gerenciada que implementa a ITask interface. Para obter mais informações, consulte Escrita de tarefas.

Executar uma tarefa a partir de um arquivo de projeto

Antes de executar uma tarefa em seu arquivo de projeto, você deve primeiro 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 sua tarefa quando a encontrar no arquivo de projeto.

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

As listas de itens e propriedades do MSBuild podem ser usadas como parâmetros. Por exemplo, o código a seguir chama a MakeDir tarefa e define o Directories valor da 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 CopiedFiles informações da propriedade output 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 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 utilização, consulte a referência de tarefas em .

Tarefas substituídas

O MSBuild procura tarefas em vários locais. O primeiro local é 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.