Sdílet prostřednictvím


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: &quot;%(Identity)&quot; -- 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

Item – prvek (MSBuild)

ItemMetadata – element (MSBuild)

Koncepty

Dávkování nástroje MSBuild

Další zdroje

Koncepty nástroje MSBuild

Referenční dokumentace nástroje MSBuild