Elemento Target (MSBuild)

Contém um conjunto de tarefas para o MSBuild executar em sequência.

<Projeto><Target>

Syntax

<Target Name="Target Name"
        Inputs="Inputs"
        Outputs="Outputs"
        Returns="Returns"
        KeepDuplicateOutputs="true/false"
        BeforeTargets="Targets"
        AfterTargets="Targets"
        DependsOnTargets="DependentTarget"
        Condition="'String A' == 'String B'"
        Label="Label">
    <Task>... </Task>
    <PropertyGroup>... </PropertyGroup>
    <ItemGroup>... </ItemGroup>
    <OnError... />
</Target>

Atributos e elementos

As seções a seguir descrevem atributos, elementos filho e elementos pai.

Atributos

Atributo Descrição
Name Atributo obrigatório.

O nome do destino. Um nome de destino pode conter qualquer caractere, exceto $@()%*?..
Condition Atributo opcional.

A condição a ser avaliada. Se a condição for avaliada como false, o destino não executará o corpo dos destinos definidos no atributo DependsOnTargets. Para obter mais informações sobre condições, consulte Condições.
Inputs Atributo opcional.

Os arquivos que formam entradas nesse destino. Vários arquivos são separados por ponto e vírgula. Os carimbos de data/hora dos arquivos serão comparados com os dos arquivos em Outputs para determinar se o Target está atualizado. Para saber mais, confira Compilações incrementais, Como compilar de forma incremental e Transformações.
Outputs Atributo opcional.

Os arquivos que formam saídas nesse destino. Vários arquivos são separados por ponto e vírgula. Os carimbos de data/hora dos arquivos serão comparados com os dos arquivos em Inputs para determinar se o Target está atualizado. Para saber mais, confira Compilações incrementais, Como compilar de forma incremental e Transformações.
Returns Atributo opcional.

O conjunto de itens que será disponibilizado para tarefas que invocam esse destino, por exemplo, tarefas do MSBuild. Vários destinos são separados por ponto e vírgula. Se os destinos no arquivo não tiverem nenhum atributo Returns, os atributos de Saídas serão usados para essa finalidade.
KeepDuplicateOutputs Atributo booliano opcional.

Se for true, várias referências ao mesmo item nos Retornos do destino serão registradas. Por padrão, esse atributo é false.
BeforeTargets Atributo opcional.

Uma lista separada por ponto e vírgula de nomes de destino. Quando especificado, indica que esse destino deve ser executado antes dos destinos especificados. Isso permite que o autor do projeto estenda um conjunto existente de destinos sem modificá-los diretamente. Para obter mais informações, confira Ordem de build de destino.
AfterTargets Atributo opcional.

Uma lista separada por ponto e vírgula de nomes de destino. Quando especificado, indica que esse destino deve ser executado após os destinos especificados. Isso permite que o autor do projeto estenda um conjunto existente de destinos sem modificá-los diretamente. Para obter mais informações, confira Ordem de build de destino.
DependsOnTargets Atributo opcional.

Os destinos que devem ser executados antes que esse destino possa ser executado ou antes que a análise de dependência de nível superior possa ocorrer. Vários destinos são separados por ponto e vírgula.
Label Atributo opcional.

Um identificador que pode identificar ou ordenar os elementos do sistema e do usuário.

Elementos filho

Elemento Descrição
Tarefa Cria e executa uma instância de uma tarefa do MSBuild. Pode haver zero ou mais tarefas em um destino.
PropertyGroup Contém um conjunto de elementos Property definidos pelo usuário. A partir do .NET Framework 3.5, um elemento Target pode conter elementos PropertyGroup.
ItemGroup Contém um conjunto de elementos Item definidos pelo usuário. A partir do .NET Framework 3.5, um elemento Target pode conter elementos ItemGroup. Para obter mais informações, consulte Itens.
OnError Faz com que um ou mais destinos sejam executados se o atributo ContinueOnError é ErrorAndStop (ou false) para uma tarefa com falha. Pode haver zero ou mais elementos OnError em um destino. Se OnError elementos estiverem presentes, eles deverão ser os últimos elementos do elemento Target.

Para saber mais sobre o atributo ContinueOnError, confira Elemento Task (MSBuild).

Elementos pai

Elemento Descrição
Projeto Elemento raiz necessário de um arquivo de projeto do MSBuild.

Comentários

O primeiro destino a ser executado é especificado em tempo de execução. Os destinos podem ter dependências em outros destinos. Por exemplo, um destino de implantação depende de um destino de compilação. O mecanismo do MSBuild executa dependências na ordem em que aparecem no atributo DependsOnTargets, da esquerda para a direita. Para obter mais informações, consulte Destinos.

O MSBuild depende da ordem de importação, e a última definição de um destino com um atributo Name específico é a definição usada.

Um destino é executado apenas uma vez durante um build, mesmo se mais de um destino tem uma dependência dele.

Se um destino for ignorado porque seu atributo Condition é avaliado como false, ele ainda poderá ser executado se for invocado posteriormente no build e se seu atributo Condition for avaliado como true nesse momento.

Antes do MSBuild 4, Target retornava todos os itens que eram especificados no atributo Outputs. Para fazer isso, o MSBuild precisava registrar esses itens, caso tarefas posteriores no build os solicitassem. Como não havia nenhuma maneira de indicar quais destinos tinham saídas que seriam exigidas por chamadores, o MSBuild acumulou todos os itens de todos os Outputs em todos os Targets invocados. Isso leva a problemas de colocação em escala em compilações que tinham um grande número de itens de saída.

Se o usuário especificar um Returns em um elemento Target de um projeto, apenas esses Targets que têm um atributo Returns registrarão esses itens.

Um Target pode conter tanto um atributo Outputs quanto um atributo Returns. Outputs é usado com Inputs para determinar se o destino está atualizado. Returns, se estiver presente, substitui o valor de Outputs para determinar quais itens são retornados aos chamadores. Se Returns não estiver presente, Outputs será disponibilizado para os chamadores, exceto no caso descrito anteriormente.

Antes do MSBuild 4, sempre que um Target incluía várias referências ao mesmo item em seu Outputs, esses itens duplicados eram registrados. Em compilações muito grandes que tinham um grande número de saídas e várias interdependências de projeto, isso causava uma grande quantidade de memória gasta devido à inutilidade dos itens duplicados. Quando o atributo KeepDuplicateOutputs é definido como true, essas duplicatas são registradas.

Exemplo

O exemplo de código a seguir mostra um elemento Target que executa a tarefa Csc.

<Target Name="Compile" DependsOnTargets="Resources" Returns="$(TargetPath)">
    <Csc Sources="@(CSFile)"
          TargetType="library"
          Resources="@(CompiledResources)"
          EmitDebugInformation="$(includeDebugInformation)"
          References="@(Reference)"
          DebugType="$(debuggingType)" >
        <Output TaskParameter="OutputAssembly"
                  ItemName="FinalAssemblyName" />
    </Csc>
</Target>

Confira também