Partilhar via


envio em lote MSBuild

MSBuild tem a capacidade de dividir item coleções em categorias diferentes ou em lotes, com base nos metadados do item e executar um destino ou tarefa 1 time com cada lote.

envio em lote de tarefa

Tarefa de envio em lote permite simplificar seus arquivos de projeto, fornecendo uma maneira de dividir item coleções em envio em lote diferentes e passagem de cada um deles envio em lote separadamente em uma tarefa.Isso significa que um arquivo de projeto só precisa ter a tarefa e seus atributos declarados uma vez, mesmo que ele possa ser executado várias vezes.

Você especificar que você deseja MSBuild para executar o lote com uma tarefa usando o %(ItemMetaDataName) notação em um dos atributos de tarefa.O exemplo a seguir divide a Example coleção em lotes com base no item a Color valor de metadados de item e passa os lotes para o MyTask tarefas separadamente.

Observação:

Se não referenciar a coleção de item em outro local nos atributos de tarefa ou o nome de metadados pode ser ambíguo, você pode usar o % ( ItemCollection.ItemMetaDataName) notação para qualificar totalmente o valor de metadados do item a ser usado para envio em lote.

<Project
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    
    <ItemGroup>
        <Example Include="Item1">
            <Color>Blue</Color>
        </Example>
        <Example Include="Item2">
            <Color>Red</Color>
        </Example>
    </ItemGroup>

    <Target Name="RunMyTask">
        <MyTask
            Sources = "@(Example)"
            Output = "%(Color)\MyFile.txt"/>
    </Target>

</Project>

Para obter exemplos de envio em lote mais específicos, consulte Como: Tarefas em lote usando metadados de item.

envio em lote de destino

MSBuild verifica se as entradas e saídas de um destino são backup - para-data antes de executar o destino. Se entradas e saídas forem backup - para-data, o destino é ignorado.Se uma tarefa dentro de um destino usa envio em lote, MSBuild precisa determinar se as entradas e saídas para cada lote de itens é backup - para-data. Caso contrário, o destino é executado sempre que for atingida.

O exemplo a seguir mostra um Target o elemento que contém um Outputs atributo com o %(ItemMetaDataName) notação.MSBuild divide o Example coleção em lotes com base no item a Color metadados de item e analisar os carimbos de data e hora dos arquivos de saída para cada lote. Se as saídas de um lote de não estiverem atualizadas, o destino é executado.Caso contrário, o destino é ignorado.

<Project
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    
    <ItemGroup>
        <Example Include="Item1">
            <Color>Blue</Color>
        </Example>
        <Example Include="Item2">
            <Color>Red</Color>
        </Example>
    </ItemGroup>

    <Target Name="RunMyTask"
        Inputs="@(Example)"
        Outputs="%(Color)\MyFile.txt">
        <MyTask
            Sources = "@(Example)"
            Output = "%(Color)\MyFile.txt"/>
    </Target>

</Project>

Para obter outro exemplo de envio em lote de destino, consulte Como: Destinos de lote utilizando metadados de item.

Consulte também

Conceitos

MSBuild conceitos avançados

Referência

Elemento ItemMetadata (MSBuild)

Outros recursos

Conceitos do MSBuild

Referência do MSBuild