Ordem de compilação de destino

Destinos devem ser ordenados se a entrada a um destino depende de saída de outro destino.Você pode usar esses atributos para especificar a ordem em que os destinos são executados:

  • InitialTargets.Esse atributo de Project especifica os destinos que terão primeiro, mesmo se os destinos são especificados na linha de comando ou no atributo de DefaultTargets .

  • DefaultTargets.Este atttribute de Project especifica que os destinos são executados se um destino não é especificado explicitamente na linha de comando.

  • DependsOnTargets.Esse atributo de Target especifica os destinos que devem executar antes que esse destino pode executar.

  • BeforeTargets e AfterTargets.Esses atributos de Target especifica que este destino deve executar antes ou depois de destinos específicos (MSBuild 4,0).

Um destino é executado nunca duas vezes durante uma compilação, mesmo se um destino na compilação subsequente depende dele.Um destino foi executado uma vez, a contribuição para a compilação concluída.

Destinos podem ter um atributo de Condition .Se a condição especificada for avaliada como false, o destino não é executado e não tem efeito na compilação.Para obter mais informações sobre as circunstâncias, consulte Condições do MSBuild.

Destinos rubrique

O atributo de InitialTargets do elemento de Projeto especifica os destinos que terão primeiro, mesmo se os destinos são especificados na linha de comando ou no atributo de DefaultTargets .Destinos iniciais são normalmente usados para verificação de erros.

O valor do atributo de InitialTargets pode ser uma lista delimitada por ponto-e-vírgula, ordenada de destino.O exemplo a seguir especifica que o destino de Warm executa, e o destino de Eject executa.

<Project InitialTargets="Warm;Eject" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">

Os projetos importados podem ter seus próprios atributos de InitialTargets .Todos os destinos iniciais são agregados juntos e execução em ordem.

Para obter mais informações, consulte Como: especificar qual destino pela primeira vez para compilação.

Destinos de opção

O atributo de DefaultTargets do elemento de Projeto especifica que direcionam ou destinos são compilados se um destino não é especificado explicitamente na linha de comando.

O valor do atributo de DefaultTargets pode ser uma lista delimitada por ponto-e-vírgula, ordenada de destinos padrão.O exemplo a seguir especifica que o destino de Clean executa, e o destino de Build executa.

<Project DefaultTargets="Clean;Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">

Você pode substituir destinos padrão usando a opção de /target na linha de comando.O exemplo a seguir especifica que o destino de Build executa, e o destino de Report executa.Quando você especifica destinos dessa maneira, todos os destinos padrão são ignorados.

msbuild /target:Build;Report

Se os destinos de inicial e destinos padrão são especificados, e se nenhum destino de linha de comando é especificado, MSBuild executa destinos iniciais primeiro em seguida, executa destinos padrão.

Os projetos importados podem ter seus próprios atributos de DefaultTargets .O primeiro atributo de DefaultTargets localizado determina que alvos de opção serão executados.

Para obter mais informações, consulte Como: especificar qual destino pela primeira vez para compilação.

Primeiro destino

Se não houver nenhum destino de inicial, alvos de opção, ou alvos de linha de comando, então é executado do MSBuild o primeiro destino que encontra no arquivo de projeto ou em todos os arquivos de projeto importados.

Dependências de destino

Destinos podem descrever relações de dependência entre si.O atributo de DependsOnTargets indica que um destino depende de outro destino.Por exemplo,

<Target Name="Serve" DependsOnTargets="Chop;Cook" />

instrui o MSBuild que o destino de Serve depende de destino de Chop e de destino de Cook .MSBuild executa o destino de Chop em seguida, executa o destino de Cook antes de executar o destino de Serve .

Antes de destinos e depois destinos

Em MSBuild 4,0, você pode especificar ordem de destino usando os atributos de BeforeTargets e de AfterTargets .

Considere o seguinte script.

<Project DefaultTargets="Compile;Link" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="Compile">
        <Message Text="Compiling" />
    </Target>
    <Target Name="Link">
        <Message Text="Linking" />
    </Target>
</Project>

Para criar um destino intermediário Optimize que é executado após o destino de Compile , mas antes que o destino de Link , adicione o seguinte destino em qualquer lugar no elemento de Project .

    <Target Name="Optimize" 
        AfterTargets="Compile" BeforeTargets="Link">
        <Message Text="Optimizing" />
    </Target>

Determinando a ordem de compilação de destino

MSBuild determina a ordem de compilação de destino como segue:

  1. destinos deInitialTargets são executados.

  2. Destinos especificados na linha de comando pelo opção de /target são executados.Se você não especificar nenhum destino na linha de comando, então os destinos de DefaultTargets são executados.Se nenhum estiver presente, então o primeiro destino localizado é executado.

  3. O atributo de Condition de destino é avaliado.Se o atributo de Condition estiver presente e avalia a false, o destino não é executado e não tem efeito adicional na compilação.

  4. Antes que um destino é executado, os seus alvos de DependsOnTargets são executados.

  5. Antes que um destino é executado, qualquer destino que listas em um atributo de BeforeTargets é executado.

  6. Antes que um destino é executado, o atributo de Inputs e o atributo de Outputs são comparados.Se MSBuild determina que todos os arquivos de saída são expirado em relação ao arquivo de entrada correspondente ou arquivos, então MSBuild executa o destino.Se não, MSBuild ignora o destino.

  7. Depois que um destino é executado ou saltado, qualquer destino que listas em um atributo de AfterTargets é executado.

Consulte também

Conceitos

Destinos do MSBuild