Praca z metadanymi elementu w docelowym przetwarzaniu wsadowym
Program MSBuild ma możliwość przeprowadzania analizy zależności na danych wejściowych i wyjściowych obiektu docelowego kompilacji. Jeśli okaże się, że dane wejściowe lub wyjściowe obiektu docelowego są aktualne, obiekt docelowy zostanie pominięty, a kompilacja będzie kontynuowana. Target
elementy używają Inputs
atrybutów i Outputs
, aby określić elementy do sprawdzenia podczas analizy zależności.
Jeśli element docelowy zawiera zadanie, które używa elementów wsadowych jako danych wejściowych lub wyjściowych, element obiektu docelowego powinien używać przetwarzania wsadowego w jego Inputs
elemecie lub Outputs
atrybutów, Target
aby umożliwić programowi MSBuild pomijanie partii elementów, które są już aktualne.
Miejsca docelowe wsadowe
Poniższy przykład zawiera listę elementów o nazwie Res
, która jest podzielona na dwie partie na Culture
podstawie metadanych elementu. Każda z tych partii jest przekazywana do AL
zadania, które tworzy zestaw wyjściowy dla każdej partii. Przy użyciu dzielenia na partie atrybutu Outputs
Target
elementu program MSBuild może określić, czy każda z poszczególnych partii jest aktualna przed uruchomieniem elementu docelowego. Bez użycia przetwarzania wsadowego obiektów docelowych obie partie elementów będą uruchamiane przez zadanie za każdym razem, gdy obiekt docelowy został wykonany.
<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>