Item – element (MSBuild)
Obsahuje uživatelem definovanou položku a její metadata. Každá položka použitá v projektu MSBuild musí být zadána jako podřízený prvek ItemGroup
.
<Projekt>
<ItemGroup>
<Položka>
Syntaxe
<Item Include="*.cs"
Exclude="MyFile.cs"
Condition="'String A'=='String B'">
<ItemMetadata1>...</ItemMetadata1>
<ItemMetadata2>...</ItemMetadata2>
</Item>
Zadání metadat jako atributů
V MSBuildu 15.1 nebo novějším se dají všechna metadata s názvem, který není v konfliktu s aktuálním seznamem atributů, volitelně vyjádřit jako atribut.
Pokud například chcete zadat seznam balíčků NuGet, normálně byste použili něco jako následující syntaxi.
<ItemGroup>
<PackageReference Include="Newtonsoft.Json">
<Version>9.0.1-beta1<Version>
</PackageReference>
</ItemGroup>
Teď ale můžete metadata předat Version
jako atribut, například v následující syntaxi:
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="9.0.1-beta1" />
</ItemGroup>
Atributy a prvky
Následující části popisují atributy, podřízené prvky a nadřazené prvky.
Atributy
Atribut | Popis |
---|---|
Include |
Nepovinný atribut. Soubor nebo zástupný znak, který chcete zahrnout do seznamu položek. |
Exclude |
Nepovinný atribut. Soubor nebo zástupný znak, který chcete vyloučit ze seznamu položek. |
Condition |
Nepovinný atribut. Podmínka, která se má vyhodnotit. Další informace naleznete v tématu Podmínky. |
Remove |
Nepovinný atribut. Soubor nebo zástupný znak, který chcete odebrat ze seznamu položek. |
MatchOnMetadata |
Nepovinný atribut.Remove Upraví atributy, které odkazují na jiné položky tak, aby odpovídaly zadaným názvům metadat místo toho, aby odpovídaly hodnotám odkazovaných položek. Tento atribut je platný pouze v případě, že je zadaný společně s atributem Remove , který obsahuje pouze odkazy na jiné položky (například Remove="@(Compile);@(Content)" ). Další podrobnosti v položkách |
MatchOnMetadataOptions |
Nepovinný atribut. Určuje strategii porovnávání řetězců, kterou MatchOnMetadata používá . Možné hodnoty jsou CaseSensitive , CaseInsensitive nebo PathLike . Výchozí hodnota je CaseInsensitive . |
KeepDuplicates |
Nepovinný atribut. Určuje, jestli má být položka přidána do cílové skupiny, pokud se jedná o přesnou duplicitu existující položky. Pokud zdroj a cílová položka mají stejnou Include hodnotu, ale různá metadata, přidá se položka i v případě, že KeepDuplicates je nastavena na false hodnotu . Další informace naleznete v tématu Položky.Tento atribut je platný pouze v případě, že je určen pro položku v ItemGroup objektu , který je v objektu Target . |
KeepMetadata |
Nepovinný atribut. Metadata zdrojových položek, která se mají přidat do cílových položek. Pouze metadata, jejichž názvy jsou zadány v seznamu odděleném středníkem, se přenesou ze zdrojové položky do cílové položky. Další informace naleznete v tématu Položky. Tento atribut je platný pouze v případě, že je určen pro položku v ItemGroup objektu , který je v objektu Target . |
RemoveMetadata |
Nepovinný atribut. Metadata zdrojových položek, která se nepřenesou do cílových položek. Všechna metadata se přenesou ze zdrojové položky do cílové položky s výjimkou metadat, jejichž názvy jsou obsaženy v seznamu názvů oddělených středníkem. Další informace naleznete v tématu Položky. Tento atribut je platný pouze v případě, že je určen pro položku v ItemGroup objektu , který je v objektu Target . |
Update |
Nepovinný atribut. (K dispozici pouze pro projekty .NET Core v sadě Visual Studio 2017 nebo novější.) Umožňuje upravit metadata položky; obvykle se používá k přepsání výchozích metadat konkrétních položek po počátečním zadání skupiny položek (například se zástupným znakem). Tento atribut je platný pouze v případě, že je určen pro položku v objektu ItemGroup , který není v objektu Target . |
Podřízené prvky
Element (Prvek) | Popis |
---|---|
ItemMetadata | Klíč metadat položky definovaný uživatelem, který obsahuje hodnotu metadat položky. V položce může existovat nula nebo více ItemMetadata prvků. |
Nadřazené prvky
Element (Prvek) | Popis |
---|---|
ItemGroup | Seskupování elementu pro položky |
Poznámky
Item
elementy definují vstupy do systému sestavení a jsou seskupené do kolekcí položek na základě jejich uživatelsky definovaných názvů kolekcí. Tyto kolekce položek lze použít jako parametry pro úlohy, které používají jednotlivé položky v kolekcích k provedení kroků procesu sestavení. Další informace naleznete v tématu Položky.
Pomocí zápisu @(<myType>) umožňuje rozšíření kolekce položek typu <myType> do seznamu řetězců oddělených středníkem a předání parametru. Pokud je parametr typu string
, pak hodnota parametru je seznam prvků oddělený středníky. Pokud je parametr polem řetězců (string[]
), každý prvek se vloží do pole na základě umístění středníků. Pokud je parametr úkolu typu ITaskItem[]
, pak hodnota je obsah kolekce položek společně s připojenými metadaty. Pokud chcete každou položku oddělit jiným znakem než středníkem, použijte syntaxi @(<myType>, '<oddělovač>').
Modul MSBuild může vyhodnotit zástupné cardy, jako *
?
jsou a rekurzivní zástupné cardy, například /**/*.cs. Další informace naleznete v tématu Položky.
Příklady
Následující příklad kódu ukazuje, jak deklarovat dvě položky typu CSFile
. Druhá deklarovaná položka obsahuje metadata, která jsou nastavena MyMetadata
na HelloWorld
.
<ItemGroup>
<CSFile Include="engine.cs; form.cs" />
<CSFile Include="main.cs" >
<MyMetadata>HelloWorld</MyMetadata>
</CSFile>
</ItemGroup>
Následující příklad kódu ukazuje, jak pomocí Update
atributu upravit metadata v souboru s názvem somefile.cs , který byl zahrnut prostřednictvím globu. (K dispozici pouze pro projekty .NET Core v sadě Visual Studio 2017 nebo novější.)
<ItemGroup>
<Compile Update="somefile.cs"> // or Update="*.designer.cs"
<MetadataKey>MetadataValue</MetadataKey>
</Compile>
</ItemGroup>