Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os destinos devem ser ordenados se a entrada para um destino depender da saída de outro destino. Você pode usar esses atributos para especificar a ordem na qual os destinos são executados:
. Esse atributo especifica os destinos que serão executados primeiro, mesmo se os destinos forem especificados na linha de comando ou no atributo.
. Esse atributo especifica quais destinos serão executados se um destino não for especificado explicitamente na linha de comando.
. Esse atributo especifica destinos que devem ser executados antes que esse destino possa ser executado.
e . Esses atributos especificam que esse destino deve ser executado antes ou depois dos destinos especificados.
Em geral, você não deve depender da ordem de declaração para especificar quais tarefas são executadas antes de outras tarefas.
Um destino nunca é executado duas vezes durante um build, mesmo que um destino subsequente no build dependa dele. Depois que um destino for executado, sua contribuição para o build está concluída.
** Alvos podem ter um atributo . Se a condição especificada for avaliada como verdadeira, o alvo não será executado e será considerado ignorado. Consulte Determinar a ordem de construção de destino para obter detalhes sobre o comportamento dos alvos ignorados. Para obter mais informações sobre condições, consulte Condições.
Destinos iniciais
O atributo do elemento Project especifica destinos que serão executados primeiro, mesmo se os destinos forem especificados na linha de comando ou no atributo. Os alvos iniciais normalmente são usados para verificação de erros.
O valor do atributo pode ser uma lista ordenada e delimitada por ponto-e-vírgula de destinos. O exemplo a seguir especifica que o destino é executado e, em seguida, o destino é executado.
<Project InitialTargets="Warm;Eject">
Projetos importados podem ter seus próprios atributos. Todos os alvos iniciais são agregados juntos e executados em ordem.
Para obter mais informações, consulte Como definir qual alvo construir primeiro.
Destinos padrão
O atributo do elemento Project especifica quais destinos ou destinos serão criados se um destino não for especificado explicitamente em uma linha de comando.
O valor do atributo pode ser uma lista ordenada e delimitada por ponto-e-vírgula de destinos padrão. O exemplo a seguir especifica que o destino é executado e, em seguida, o destino é executado.
<Project DefaultTargets="Clean;Build">
Você pode substituir os destinos padrão usando a opção -target na linha de comando. O exemplo a seguir especifica que o destino é executado e, em seguida, o destino é executado. Quando você especifica destinos dessa forma, todos os destinos padrão são ignorados.
msbuild -target:Build;Report
Se os destinos iniciais e os destinos padrão forem especificados e se nenhum destino de linha de comando for especificado, o MSBuild executará os destinos iniciais primeiro e executará os destinos padrão.
Projetos importados podem ter seus próprios atributos. O primeiro atributo encontrado determina quais destinos padrão serão executados.
Para obter mais informações, consulte Como definir qual alvo construir primeiro.
Primeiro destino
Se não houver destinos iniciais, destinos padrão ou destinos de linha de comando, o MSBuild executará o primeiro destino encontrado no arquivo de projeto ou em qualquer arquivo de projeto importado.
Dependências de destino
Os alvos podem descrever relações de dependência entre si. O atributo indica que um destino depende de outros destinos. Por exemplo
<Target Name="Serve" DependsOnTargets="Chop;Cook" />
informa ao MSBuild que o alvo depende do alvo e do alvo . O MSBuild executa o destino e executa o destino antes de executar o destino.
Observação
Os destinos padrão no SDK definem várias propriedades que contêm a lista de destinos que são dependências para esse destino (por exemplo, e assim por diante). Por exemplo
<Target Name="Build" DependsOnTargets="$(BuildDependsOn)">
Para personalizar um projeto, você pode sobrescrever as propriedades DependsOn com alvos personalizados adicionais que estendem o processo de compilação, conforme descrito em Estender o processo de compilação do Visual Studio.
BeforeTargets e AfterTargets
Você pode especificar a ordem de destino usando os atributos e .
Considere o script a seguir.
<Project DefaultTargets="Compile;Link">
<Target Name="Compile">
<Message Text="Compiling" />
</Target>
<Target Name="Link">
<Message Text="Linking" />
</Target>
</Project>
Para criar um destino intermediário executado após o destino, mas antes do destino, adicione o seguinte destino em qualquer lugar no elemento.
<Target Name="Optimize" AfterTargets="Compile">
<Message Text="Optimizing" />
</Target>
Como alternativa, especifique a ordem como
<Target Name="Optimize" BeforeTargets="Link">
<Message Text="Optimizing" />
</Target>
Não é útil especificar ambos e no mesmo destino. Conforme descrito na próxima seção, somente o primeiro destino encontrado fará com que o novo destino seja executado.
Determinar a ordem de build alvo
O MSBuild determina a ordem de build de destino da seguinte maneira:
** os alvos são executados.
Os destinos especificados na linha de comando pelo comutador -target são executados. Se você não especificar nenhum destino na linha de comando, os destinos serão executados. Se nenhum dos dois estiver presente, o primeiro destino encontrado será acionado.
O atributo do destino é avaliado. Se o atributo estiver presente e for avaliado como , o destino não será executado e será considerado ignorado.
Outros alvos que listam o alvo condicional dentro de ou ainda são executados na ordem prescrita, independentemente do resultado da condição.
Observação
Um destino ignorado não é considerado executado. Se outro alvo mais tarde o solicitar por algum meio e a condição agora for avaliada como verdadeira, o alvo será executado nesse ponto. No entanto, processos ou tarefas que já foram executados para o destino originalmente ignorado não serão executados novamente.
Antes que o alvo seja executado ou ignorado, seus alvos são executados, a menos que o atributo seja aplicado ao alvo e seja avaliado como .
Observação
Um alvo será considerado pulado se não for executado porque seus itens de saída estão marcados como up-to-date (consulte construção incremental). Essa verificação é feita pouco antes de executar as tarefas dentro do alvo e não afeta a ordem de execução dos alvos.
Antes que o alvo seja executado ou ignorado, qualquer outro alvo que liste o alvo em um atributo será executado.
Antes que o destino seja executado, seu atributo e atributo são comparados. Se o MSBuild determinar que quaisquer arquivos de saída estão desatualizados em relação ao arquivo de entrada ou arquivos correspondentes, o MSBuild executará o alvo. Caso contrário, o MSBuild ignorará o alvo.
Depois que o destino é executado ou ignorado, qualquer outro destino que o lista em um atributo é executado.
Conteúdo relacionado
- Metas