Metadata položek v dávkování úloh
MSBuildmá možnost rozdělit do různých kategorií nebo listy, položky seznamů založených na metadata položky a úlohu spustit jednou s každou dávkou.Může být matoucí pochopit přesně položky, které jsou předávány pomocí které dávky.Toto téma obsahuje následující běžné scénáře zahrnující dávkování.
Seznam položek rozdělení šarží
Rozdělení šarží několik seznamů položek
Dávkování vždy jednu položku
Filtrování seznamů položek
Další informace o dávkových souborech s MSBuild, viz Dávkování nástroje MSBuild.
Seznam položek rozdělení šarží
Dávkové stahování umožňuje rozdělit seznam položek do různých listů založených na metadata položky a předat jednotlivých šarží úkol samostatně.To je užitečné pro vytváření satelitní sestavení.
Následující příklad ukazuje, jak rozdělit listy založené na metadata položky seznam položek.ExampColl Seznam zboží je rozdělen na tři listy založené na Number metadata položky.Přítomnost %(ExampColl.Number)v Text upozorní atribut MSBuild , že dávky se provádí.ExampColl Seznam zboží je rozdělen na tři listy založené na Number metadat a každá šarže je předány samostatně.
<Project
xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ExampColl Include="Item1">
<Number>1</Number>
</ExampColl>
<ExampColl Include="Item2">
<Number>2</Number>
</ExampColl>
<ExampColl Include="Item3">
<Number>3</Number>
</ExampColl>
<ExampColl Include="Item4">
<Number>1</Number>
</ExampColl>
<ExampColl Include="Item5">
<Number>2</Number>
</ExampColl>
<ExampColl Include="Item6">
<Number>3</Number>
</ExampColl>
</ItemGroup>
<Target Name="ShowMessage">
<Message
Text = "Number: %(ExampColl.Number) -- Items in ExampColl: @(ExampColl)"/>
</Target>
</Project>
Úlohy zpráv Úloh zobrazí následující informace:
Number: 1 -- Items in ExampColl: Item1;Item4
Number: 2 -- Items in ExampColl: Item2;Item5
Number: 3 -- Items in ExampColl: Item3;Item6
Vydělením několik položek jsou uvedeny do listů
MSBuildvíce seznamů položek lze rozdělit do listů založených na stejné metadat.Usnadňuje rozdělit do listů vytvářet více sestavení seznamů jinou položku.Můžete mít například seznam položek souborů .cs rozdělen na aplikační dávky a dávky sestavení a seznam položek souborů prostředků rozdělit aplikační dávky a dávky sestavení.Poté můžete použít dávkování předat tyto seznamy zboží do jednoho úkolu a vytvoření aplikace a sestavení.
[!POZNÁMKA]
Pokud seznam položek předávány do úkolu neobsahuje žádné položky odkazované metadaty, všechny položky v seznamu položky předána do každé šarže.
Následující příklad ukazuje, jak rozdělit listy založené na metadata položky seznamu více položek.ExampColl a ExampColl2 každé položky seznamů jsou rozděleny do tří listů založených na Number metadata položky.Přítomnost %(Number)v Text upozorní atribut MSBuild , že dávky se provádí.ExampColl a ExampColl2 seznamy zboží jsou rozděleny do tří dávek na základě Number metadat a každá šarže je předány samostatně.
<Project
xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ExampColl Include="Item1">
<Number>1</Number>
</ExampColl>
<ExampColl Include="Item2">
<Number>2</Number>
</ExampColl>
<ExampColl Include="Item3">
<Number>3</Number>
</ExampColl>
<ExampColl2 Include="Item4">
<Number>1</Number>
</ExampColl2>
<ExampColl2 Include="Item5">
<Number>2</Number>
</ExampColl2>
<ExampColl2 Include="Item6">
<Number>3</Number>
</ExampColl2>
</ItemGroup>
<Target Name="ShowMessage">
<Message
Text = "Number: %(Number) -- Items in ExampColl: @(ExampColl) ExampColl2: @(ExampColl2)"/>
</Target>
</Project>
Úlohy zpráv Úloh zobrazí následující informace:
Number: 1 -- Items in ExampColl: Item1 ExampColl2: Item4
Number: 2 -- Items in ExampColl: Item2 ExampColl2: Item5
Number: 3 -- Items in ExampColl: Item3 ExampColl2: Item6
Dávkování vždy jednu položku
Dávky lze provést také na metadata položky známých přiřazenou každé položky při vytvoření.Záruky, všechny položky v kolekci mají některá metadata pro dávkování.Identity Hodnoty metadat je jedinečný pro každé zboží a je užitečná pro rozdělení do samostatných dávek každé položky v seznamu položky.Úplný seznam známých položek metadat naleznete v Metadata známé položky nástroje MSBuild.
Následující příklad ukazuje, jak jednotlivé položky v seznamu položky jeden dávek najednou.Protože Identity hodnota každé položky je jedinečný, ExampColl seznam položek je rozdělen do šesti listů každé šarže obsahující jednu položku seznamu položek.Přítomnost %(Identity)v Text upozorní atribut MSBuild , že dávky se provádí.
<Project
xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ExampColl Include="Item1"/>
<ExampColl Include="Item2"/>
<ExampColl Include="Item3"/>
<ExampColl Include="Item4"/>
<ExampColl Include="Item5"/>
<ExampColl Include="Item6"/>
</ItemGroup>
<Target Name="ShowMessage">
<Message
Text = "Identity: "%(Identity)" -- Items in ExampColl: @(ExampColl)"/>
</Target>
</Project>
Úlohy zpráv Úloh zobrazí následující informace:
Identity: "Item1" -- Items in ExampColl: Item1
Identity: "Item2" -- Items in ExampColl: Item2
Identity: "Item3" -- Items in ExampColl: Item3
Identity: "Item4" -- Items in ExampColl: Item4
Identity: "Item5" -- Items in ExampColl: Item5
Identity: "Item6" -- Items in ExampColl: Item6
Seznamy filtrování položek
Dávky lze odfiltrovat některé položky ze seznamu položku před předáním k úkolu.Například filtrování Extension hodnota metadat položky známých umožňuje spuštění úlohy pouze soubory s určitou příponou.
Následující příklad ukazuje, jak rozdělit seznam položek do listů založených na metadata položky a potom tyto listy filtrovat při předávání do úkolu.ExampColl Seznam zboží je rozdělen na tři listy založené na Number metadata položky.Condition Atribut úkolu určuje, že pouze partií s Number hodnotu metadata položky 2 bude předán do úkolu
<Project
xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ExampColl Include="Item1">
<Number>1</Number>
</ExampColl>
<ExampColl Include="Item2">
<Number>2</Number>
</ExampColl>
<ExampColl Include="Item3">
<Number>3</Number>
</ExampColl>
<ExampColl Include="Item4">
<Number>1</Number>
</ExampColl>
<ExampColl Include="Item5">
<Number>2</Number>
</ExampColl>
<ExampColl Include="Item6">
<Number>3</Number>
</ExampColl>
</ItemGroup>
<Target Name="Exec">
<Message
Text = "Items in ExampColl: @(ExampColl)"
Condition="'%(Number)'=='2'"/>
</Target>
</Project>
Úlohy zpráv Úloh zobrazí následující informace:
Items in ExampColl: Item2;Item5
Viz také
Referenční dokumentace
Metadata známé položky nástroje MSBuild
ItemMetadata – element (MSBuild)