Trabalhar com metadados de itens no envio em lotes para o destino
O MSBuild tem a capacidade de executar análise de dependência nas entradas e saídas de um destino de build. Se for determinado que as entradas ou as saídas do destino estão atualizadas, o destino será ignorado e o build continuará. Elementos Target
usam os atributos Inputs
e Outputs
para especificar os itens a fim de inspecionar durante a análise de dependência.
Se um destino contiver uma tarefa que usa itens em lotes como entradas ou saídas, o elemento Target
do destino deve usar o envio em lote nos atributos Inputs
ou Outputs
para habilitar o MSBuild a ignorar lotes de itens que já estão atualizados.
Destinos em lotes
O exemplo a seguir contém uma lista de item nomeada Res
que é dividida em dois lotes baseados nos metadados de item Culture
. Cada um desses lotes é passada para a tarefa AL
, que cria um assembly de saída para cada lote. Ao usar o envio em lote no atributo Outputs
do elemento Target
, o MSBuild pode determinar se cada um dos lotes individuais está atualizado antes de executar o destino. Sem o uso do envio em lote de destino, ambos os lotes de itens seriam executados pela tarefa toda vez que o destino fosse executado.
<Project
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Res Include="Strings.fr.resources">
<Culture>fr</Culture>
</Res>
<Res Include="Strings.jp.resources">
<Culture>jp</Culture>
</Res>
<Res Include="Menus.fr.resources">
<Culture>fr</Culture>
</Res>
<Res Include="Dialogs.fr.resources">
<Culture>fr</Culture>
</Res>
<Res Include="Dialogs.jp.resources">
<Culture>jp</Culture>
</Res>
<Res Include="Menus.jp.resources">
<Culture>jp</Culture>
</Res>
</ItemGroup>
<Target Name="Build"
Inputs="@(Res)"
Outputs="%(Culture)\MyApp.resources.dll">
<AL Resources="@(Res)"
TargetType="library"
OutputAssembly="%(Culture)\MyApp.resources.dll">
</AL>
</Target>
</Project>