Condividi tramite


Procedura: creare batch di destinazioni tramite i metadati di elementi

Aggiornamento: novembre 2007

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

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 insieme di elementi denominato Res che viene suddiviso in due batch basati sui metadati dell'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

Procedura: creare batch di attività tramite i metadati degli elementi

Concetti

Batch MSBuild

Riferimenti

Elemento Target (MSBuild)