Elemento Target (MSBuild)
Contém um conjunto de tarefas para o MSBuild executar em sequência.
<Projeto><Target>
Syntax
<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.
Atributos
Atributo | Descrição |
---|---|
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 como false , o destino não executará o corpo dos destinos definidos no atributo DependsOnTargets . 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 dos arquivos em Outputs para determinar se o Target está atualizado. Para saber mais, confira Compilações incrementais, Como compilar de forma incremental e Transformações. |
Outputs |
Atributo opcional. Os arquivos que formam saídas 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 dos arquivos em Inputs para determinar se o Target está atualizado. Para saber mais, confira Compilações incrementais, Como compilar de forma incremental e Transformações. |
Returns |
Atributo opcional. O conjunto de itens que será disponibilizado para tarefas que invocam esse destino, por exemplo, tarefas do MSBuild. Vários destinos são separados por ponto e vírgula. Se os destinos no arquivo não tiverem nenhum atributo Returns , os atributos de Saídas serão usados para essa finalidade. |
KeepDuplicateOutputs |
Atributo booliano opcional. Se for true , várias referências ao mesmo item nos Retornos do destino serã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 dos destinos especificados. Isso permite que o autor do projeto estenda um conjunto existente de destinos sem modificá-los diretamente. Para obter mais informações, confira Ordem de build 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 os destinos especificados. Isso permite que o autor do projeto estenda um conjunto existente de destinos sem modificá-los diretamente. Para obter mais informações, confira Ordem de build de destino. |
DependsOnTargets |
Atributo opcional. Os destinos que devem ser executados antes que esse destino possa ser executado ou antes que a análise de dependência de nível superior possa ocorrer. Vários destinos são separados por ponto e vírgula. |
Label |
Atributo opcional. Um identificador que pode identificar ou ordenar os elementos do sistema e do usuário. |
Elementos filho
Elemento | Descrição |
---|---|
Tarefa | Cria e executa uma instância de uma tarefa do MSBuild. Pode haver zero ou mais tarefas em um destino. |
PropertyGroup | Contém um conjunto de elementos Property definidos pelo usuário. A partir do .NET Framework 3.5, um elemento Target pode conter elementos PropertyGroup . |
ItemGroup | Contém um conjunto de elementos Item definidos pelo usuário. A partir do .NET Framework 3.5, um elemento Target pode conter elementos ItemGroup . Para obter mais informações, consulte Itens. |
OnError | Faz com que um ou mais destinos sejam executados se o atributo ContinueOnError é ErrorAndStop (ou false ) para uma tarefa com falha. Pode haver zero ou mais elementos OnError em um destino. Se OnError elementos estiverem presentes, eles deverão ser os últimos elementos do elemento Target .Para saber mais sobre o atributo ContinueOnError , confira Elemento Task (MSBuild). |
Elementos pai
Elemento | Descrição |
---|---|
Projeto | Elemento raiz necessário de um arquivo de projeto do MSBuild. |
Comentários
O primeiro destino a ser executado é especificado em tempo de execução. Os destinos podem ter dependências em outros destinos. Por exemplo, um destino de implantação depende de um destino de compilação. O mecanismo do MSBuild executa dependências na ordem em que aparecem no atributo DependsOnTargets
, da esquerda para a direita. Para obter mais informações, consulte Destinos.
O MSBuild depende da ordem de importação, e a última definição de um destino com um atributo Name
específico é a definição usada.
Um destino é executado apenas uma vez durante um build, mesmo se mais de um destino tem uma dependência dele.
Se um destino for ignorado porque seu atributo Condition
é avaliado como false
, ele ainda poderá ser executado se for invocado posteriormente no build e se seu atributo Condition
for avaliado como true
nesse momento.
Antes do MSBuild 4, Target
retornava todos os itens que eram especificados no atributo Outputs
. Para fazer isso, o MSBuild precisava registrar esses itens, caso tarefas posteriores no build os solicitassem. Como não havia nenhuma maneira de indicar quais destinos tinham saídas que seriam exigidas por chamadores, o MSBuild acumulou todos os itens de todos os Outputs
em todos os Target
s invocados. Isso leva a problemas de colocação em escala em compilações que tinham um grande número de itens de saída.
Se o usuário especificar um Returns
em um elemento Target
de um projeto, apenas esses Target
s que têm um atributo Returns
registrarão esses itens.
Um Target
pode conter tanto um atributo Outputs
quanto um atributo Returns
. Outputs
é usado com Inputs
para determinar se o destino está atualizado. Returns
, se estiver presente, substitui o valor de Outputs
para determinar quais itens são retornados aos chamadores. Se Returns
não estiver presente, Outputs
será disponibilizado para os chamadores, exceto no caso descrito anteriormente.
Antes do MSBuild 4, sempre que um Target
incluía várias referências ao mesmo item em seu Outputs
, esses itens duplicados eram registrados. Em compilações muito grandes que tinham um grande número de saídas e várias interdependências de projeto, isso causava uma grande quantidade de memória gasta devido à inutilidade dos itens duplicados. Quando o atributo KeepDuplicateOutputs
é definido como true
, essas duplicatas são registradas.
Exemplo
O exemplo de código a seguir mostra um elemento Target
que executa a tarefa Csc
.
<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>