Metadati degli elementi nell'esecuzione in batch delle destinazioni

In MSBuild è possibile eseguire l'analisi delle dipendenze sugli input e sugli output di una destinazione di compilazione.Se viene determinato che gli input o gli output della destinazione sono aggiornati, la destinazione viene ignorata e la compilazione procede.Gli elementi Target utilizzano gli attributi Inputs e Outputs per specificare gli elementi da controllare durante l'analisi delle dipendenze.

Se una destinazione contiene un'attività che utilizza elementi suddivisi in batch come input o output, l'elemento Target della destinazione dovrebbe utilizzare la divisione in batch nei propri attributi Inputs o Outputs per consentire a MSBuild di ignorare i batch degli elementi già aggiornati.

Divisione in batch di destinazioni

L'esempio seguente contiene un elenco di elementi denominato Res che viene diviso in due batch in base ai metadati di elemento Culture.Ciascuno dei batch viene passato nell'attività AL, la quale crea un assembly di output per ciascun batch.Utilizzando la divisione in batch nell'attributo Outputs dell'elemento Target, MSBuild sarà in grado di determinare se ogni singolo batch è aggiornato prima di eseguire la destinazione.Se non venisse utilizzata la divisione in batch della destinazione, entrambi i batch degli elementi verrebbero eseguiti dall'attività ogni volta che viene eseguita la destinazione.

<Project
    xmlns="https://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"

    </Target>

</Project>

Vedere anche

Attività

Procedura: eseguire la compilazione incrementale

Riferimenti

Elemento Target (MSBuild)

Concetti

Batch MSBuild

Metadati degli elementi nell'esecuzione in batch delle attività