Elemento de destino (MSBuild)

Contém um conjunto de tarefas para o MSBuild executar sequencialmente.

<Alvo do Projeto><>

Sintaxe

<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.

Attributes

Attribute Description
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 para false, o alvo não executará o corpo do alvo nem quaisquer alvos definidos no DependsOnTargets atributo. 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 carimbos de data/hora dos arquivos para Outputs determinar se o Target está atualizado. Para obter mais informações, consulte Compilações incrementais, Como criar incrementalmente e Transformações.
Outputs Atributo opcional.

Os arquivos que formam saídas para este destino. Vários arquivos são separados por ponto-e-vírgula. Os carimbos de data/hora dos arquivos serão comparados com os carimbos de data/hora dos arquivos para Inputs determinar se o Target está atualizado. Para obter mais informações, consulte Compilações incrementais, Como criar incrementalmente e Transformações.
Returns Atributo opcional.

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

Se true, várias referências ao mesmo item nos Devoluções do destino sã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 do(s) destino(s) especificado(s). Isso permite que o autor do projeto estenda um conjunto existente de metas sem modificá-las diretamente. Para obter mais informações, consulte Ordem de compilação 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 o(s) destino(s) especificado(s). Isso permite que o autor do projeto estenda um conjunto existente de metas sem modificá-las diretamente. Para obter mais informações, consulte Ordem de compilação de destino.
DependsOnTargets Atributo opcional.

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

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

Elementos filho

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

Para obter informações sobre o ContinueOnError atributo, consulte Elemento de tarefa (MSBuild).

Elementos pai

Elemento Description
Projeto Elemento raiz necessário de um arquivo de projeto MSBuild.

Observações

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

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

Um destino só é executado uma vez durante uma compilação, mesmo que mais de um destino dependa dele.

Se um alvo for ignorado porque o seu Condition atributo avalia para false, ainda pode ser executado se for invocado mais tarde na build e o seu Condition atributo for avaliado para true nesse momento.

Antes do MSBuild 4, Target retornava todos os Outputs itens especificados no atributo. Para fazer isso, o MSBuild teve que registrar esses itens caso tarefas posteriores na compilação os solicitassem. Como não havia como indicar quais destinos tinham saídas que os chamadores exigiriam, o MSBuild acumulou todos os itens de todos Outputs em todos os s invocados Target. Isto levou a problemas de escalabilidade para builds que tinham um grande número de itens de saída.

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

A Target pode conter um Outputs atributo e um Returns atributo. Outputs é usado com Inputs para determinar se o destino é up-to-date. Returns, se presente, substitui o valor de para determinar quais itens são retornados Outputs aos chamadores. Se Returns não estiver presente, estará Outputs disponível para os ouvintes, exceto no caso descrito anteriormente.

O resultado disponibilizado aos chamadores através Outputs de ou Returns é captado imediatamente após a conclusão do alvo. Inspecionar o estado da mesma expressão de item mais tarde pode devolver resultados diferentes, por exemplo, se outro alvo enganchar o alvo com AfterTargets e modificar a lista de itens devolvidos (depois de o alvo estar concluído, mas antes de devolver o controlo ao chamador do alvo).

Antes do MSBuild 4, sempre que um Target incluísse várias referências ao mesmo item em seu Outputs, esses itens duplicados seriam registrados. Em builds muito grandes que tinham um grande número de saídas e muitas interdependências de projetos, isto causava o desperdício de uma grande quantidade de memória porque os itens duplicados não eram úteis. Quando o KeepDuplicateOutputs atributo é definido como true, essas duplicatas são registradas.

Example

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

<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>

Consulte também