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:
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.
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.
Antes de um destino é executado, sua DependsOnTargets alvos são executar.
Antes de um destino é executado, qualquer destino que lista em um BeforeTargets atributo é executar.
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.
Depois que um destino é executado ou ignorado, qualquer destino que lista em um AfterTargets atributo é executar.