Partilhar via


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>