Partilhar via


Ordem de compilação de destino

Destinos devem ser encomendados se a entrada para um destino depende da saída de outro destino. Há várias maneiras para especificar a ordem na qual os destinos são executados.

  • Metas iniciais

  • Destinos padrão

  • Primeiro destino

  • Dependências do destino

  • BeforeTargetse AfterTargets (MSBuild 4.0)

Um destino nunca é executado duas vezes durante uma compilação, mesmo se um destino subseqüente na compilação depende dele. Depois de um destino tiver sido executado, sua contribuição para a compilação foi concluída.

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

Metas iniciais

O projeto elemento possui um recurso opcional InitialTargets atributo cujo valor pode ser um delimitada por ponto e ordenados a lista de destinos. Por exemplo,

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

Especifica que a quente de destino é executada e o executa de destino de ejeção.

Projetos importados podem ter seus próprios InitialTargets atributos. Todos os alvos iniciais são agregados juntos e executados em ordem. Alvos iniciais são normalmente usados para verificação de erro.

Metas iniciais podem ser substituídas por meio da linha de comando. Por exemplo,

msbuild /target:Build;Report

Especifica que o destino de compilação é executado e, em seguida, o relatório de destino é executado. Quando os destinos são especificados dessa forma, qualquer alvos iniciais são ignorados.

Para obter mais informações, consulte How to: Especificar qual destino Build primeiro.

Destinos padrão

O Project elemento também tem um recurso opcional DefaultTargets atributo cujo valor pode ser um delimitada por ponto e ordenados a lista de destinos de padrão. Por exemplo,

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

Especifica que as execuções de limpar o destino e a compilação de destino é executado.

Projetos importados podem ter seus próprios DefaultTargets atributos. O primeiro DefaultTargets atributo encontrado determina quais destinos padrão serão executado.

Destinos padrão podem ser substituídos por meio da linha de comando. Por exemplo,

msbuild /target:Build;Report

Especifica que o destino de compilação é executado e, em seguida, o relatório de destino é executado. Quando os destinos são especificados dessa maneira, os destinos padrão são ignorados.

Se forem especificados metas iniciais e destinos padrão e se nenhum destino de linha de comando for especificado, MSBuild executa os alvos iniciais primeiro e executa os destinos do padrão.

Primeiro destino

Se não existem metas iniciais, destinos padrão ou destinos de linha de comando, em seguida, o MSBuild é executado primeiro destino encontra no arquivo de projeto ou de qualquer projeto importado arquivos.

Dependências do destino

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

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

informa o MSBuild que o destino de servir depende o destino de corte e o destino de Cook. MSBuild é executado o destino de corte e, em seguida, executa o destino de Cook, antes de executar o destino de servir.

BeforeTargets e AfterTargets

No MSBuild 4.0, você pode especificar a ordem de destino usando o BeforeTargets e AfterTargets atributos.

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 otimizar é executado após o destino de compilação, mas antes o destino do Link, adicione o seguinte destino em qualquer lugar no Project elemento.

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

Determinar a ordem de compilação de destino

MSBuild determina a ordem de compilação do destino da seguinte maneira:

  1. Destinos especificados na linha de comando, o /target são a opção Executar. Se nenhum destino for especificado, InitialTargets destinos são executados, seguido por DefaultTargets destinos. Se nenhuma estiver presente, o primeiro destino encontrado é executado.

  2. O Condition atributo do destino é avaliado. Se o Condition atributo está presente e é avaliada como false, o destino não é executado e nenhuma outra tem afetam na compilação.

  3. Antes de um destino é executado, sua DependsOnTargets alvos são executar.

  4. Antes de um destino é executado, qualquer destino que lista em um BeforeTargets atributo é executar.

  5. Antes de um destino é executado, sua Inputs atributo e Outputs atributo são comparados. Se o MSBuild determina que os arquivos de saída estão desatualizados em relação ao arquivo de entrada correspondente ou arquivos, MSBuild executa o destino. Caso contrário, o MSBuild ignora o destino.

  6. Depois que um destino é executado ou ignorado, qualquer destino que lista em um AfterTargets atributo é executar.

Consulte também

Conceitos

Destinos do MSBuild