Usare i metadati degli elementi nell'invio in batch di destinazione
MSBuild ha la possibilità di eseguire l'analisi delle dipendenze sugli input e sugli output di una destinazione di compilazione. Se viene stabilito che l'input o output della destinazione sono aggiornati, la destinazione viene ignorata e la compilazione prosegue. Gli elementi Target
usano gli attributi Inputs
e Outputs
per specificare gli elementi da controllare durante l'analisi delle dipendenze.
Se una destinazione contiene un'attività che usa elementi in batch come input o output, l'elemento Target
della destinazione deve usare l'invio in batch nei relativi Inputs
attributi o Outputs
per consentire a MSBuild di ignorare i batch di elementi già aggiornati.
Destinazioni di batch
L'esempio seguente contiene un elenco di elementi denominato Res
che viene suddiviso in due batch in base ai metadati dell'elemento Culture
. Ognuno di questi batch viene passato nell'attività AL
, che crea un assembly di output per ogni batch. Usando l'invio in batch sull'attributo Outputs
dell'elemento Target
, MSBuild può determinare se ognuno dei singoli batch è aggiornato prima di eseguire la destinazione. Senza usare la suddivisione in batch della destinazione, entrambi i batch di elementi verrebbero eseguiti dall'attività ogni volta che viene eseguita la destinazione.
<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>