Element elementu (MSBuild)

Zawiera element zdefiniowany przez użytkownika i jego metadane. Każdy element używany w projekcie MSBuild musi być określony jako element podrzędny ItemGroup elementu.

<Projekt>
 <Itemgroup>
  <Produkt>

Składnia

<Item Include="*.cs"
        Exclude="MyFile.cs"
        Condition="'String A'=='String B'">
    <ItemMetadata1>...</ItemMetadata1>
    <ItemMetadata2>...</ItemMetadata2>
</Item>

Określanie metadanych jako atrybutów

W programie MSBuild 15.1 lub nowszym wszelkie metadane o nazwie, które nie powodują konfliktu z bieżącą listą atrybutów, mogą być opcjonalnie wyrażone jako atrybut.

Aby na przykład określić listę pakietów NuGet, zwykle należy użyć czegoś podobnego do poniższej składni.

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json">
    <Version>9.0.1-beta1<Version>
  </PackageReference>
</ItemGroup>

Teraz można jednak przekazać Version metadane jako atrybut, na przykład w następującej składni:

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json" Version="9.0.1-beta1" />
</ItemGroup>

Atrybuty i elementy

W poniższych sekcjach opisano atrybuty, elementy podrzędne i elementy nadrzędne.

Atrybuty

Atrybut opis
Include Atrybut opcjonalny.

Plik lub symbol wieloznaczny do uwzględnienia na liście elementów.
Exclude Atrybut opcjonalny.

Plik lub symbol wieloznaczny do wykluczenia z listy elementów.
Condition Atrybut opcjonalny.

Warunek do obliczenia. Aby uzyskać więcej informacji, zobacz Warunki.
Remove Atrybut opcjonalny.

Plik lub symbol wieloznaczny do usunięcia z listy elementów.

MatchOnMetadata Atrybut opcjonalny.

Modyfikuje Remove atrybuty odwołujące się do innych elementów, które mają być zgodne z określonymi nazwami metadanych, zamiast dopasowywać się do wartości elementów, do których odwołuje się odwołanie.

Ten atrybut jest prawidłowy tylko wtedy, gdy jest określony razem z atrybutem Remove zawierającym tylko odwołania do innych elementów (na przykład Remove="@(Compile);@(Content)"). Więcej szczegółów można znaleźć w temacie Items (Elementy).
MatchOnMetadataOptions Atrybut opcjonalny.

Określa strategię dopasowywania ciągów używaną przez MatchOnMetadataelement . Możliwe wartości to CaseSensitive, CaseInsensitivelub PathLike. Wartość domyślna to CaseInsensitive.
KeepDuplicates Atrybut opcjonalny.

Określa, czy element powinien zostać dodany do grupy docelowej, jeśli jest to dokładny duplikat istniejącego elementu. Jeśli element źródłowy i docelowy mają tę samą Include wartość, ale różne metadane, element zostanie dodany, nawet jeśli KeepDuplicates jest ustawiony na falsewartość . Aby uzyskać więcej informacji, zobacz Elementy.

Ten atrybut jest prawidłowy tylko wtedy, gdy jest określony dla elementu w obiekcie w elemencie ItemGroupTarget.
KeepMetadata Atrybut opcjonalny.

Metadane elementów źródłowych do dodania do elementów docelowych. Tylko metadane, których nazwy są określone na liście rozdzielanej średnikami, są przenoszone z elementu źródłowego do elementu docelowego. Aby uzyskać więcej informacji, zobacz Elementy.

Ten atrybut jest prawidłowy tylko wtedy, gdy jest określony dla elementu w obiekcie w elemencie ItemGroupTarget.
RemoveMetadata Atrybut opcjonalny.

Metadane elementów źródłowych, które nie zostaną przeniesione do elementów docelowych. Wszystkie metadane są przesyłane z elementu źródłowego do elementu docelowego z wyjątkiem metadanych, których nazwy znajdują się na rozdzielanej średnikami liście nazw. Aby uzyskać więcej informacji, zobacz Elementy.

Ten atrybut jest prawidłowy tylko wtedy, gdy jest określony dla elementu w obiekcie w elemencie ItemGroupTarget.
Update Atrybut opcjonalny. (Dostępne tylko dla projektów .NET Core w programie Visual Studio 2017 lub nowszym).

Umożliwia modyfikowanie metadanych elementu; zwykle służy do zastępowania domyślnych metadanych określonych elementów po tym, jak grupa elementów jest określana w sposób inicjały (na przykład z symbolem wieloznacznymi).

Ten atrybut jest prawidłowy tylko wtedy, gdy jest określony dla elementu w obiekcie ItemGroup , który nie znajduje się w elemencie Target.

Elementy podrzędne

Element opis
ItemMetadata Klucz metadanych elementu zdefiniowany przez użytkownika, który zawiera wartość metadanych elementu. Element może zawierać zero lub więcej ItemMetadata elementów.

Elementy nadrzędne

Element opis
Itemgroup Element grupowania dla elementów.

Uwagi

Item elementy definiują dane wejściowe w systemie kompilacji i są grupowane w kolekcje elementów na podstawie nazw kolekcji zdefiniowanych przez użytkownika. Te kolekcje elementów mogą służyć jako parametry dla zadań podrzędnych, które używają poszczególnych elementów w kolekcjach do wykonywania kroków procesu kompilacji. Aby uzyskać więcej informacji, zobacz Elementy.

Użycie notacji @(<myType) umożliwia rozszerzenie kolekcji elementów typu <myType>> na listę ciągów rozdzielanych średnikami i przekazywanych do parametru. Jeśli parametr ma typ string, wartość parametru jest listą elementów oddzielonych średnikami. Jeśli parametr jest tablicą ciągów (string[]), każdy element jest wstawiany do tablicy na podstawie lokalizacji średników. Jeśli parametr zadania ma typ ITaskItem[], wartość jest zawartością kolekcji elementów wraz z dołączonymi metadanymi. Aby rozdzielić każdy element przy użyciu znaku innego niż średnik, użyj składni @(<myType>, separatora<>).

Aparat MSBuild może oceniać symbole wieloznaczne, takie jak * i ? i cykliczne symbole wieloznaczne, takie jak /**/*.cs. Aby uzyskać więcej informacji, zobacz Elementy.

Przykłady

Poniższy przykład kodu pokazuje, jak zadeklarować dwa elementy typu CSFile. Drugi zadeklarowany element zawiera metadane ustawione MyMetadata na HelloWorldwartość .

<ItemGroup>
    <CSFile Include="engine.cs; form.cs" />
    <CSFile Include="main.cs" >
        <MyMetadata>HelloWorld</MyMetadata>
    </CSFile>
</ItemGroup>

W poniższym przykładzie kodu pokazano, jak użyć atrybutu Update w celu zmodyfikowania metadanych w pliku o nazwie somefile.cs , który został uwzględniony za pośrednictwem globu. (Dostępne tylko dla projektów .NET Core w programie Visual Studio 2017 lub nowszym).

<ItemGroup>
    <Compile Update="somefile.cs">  // or Update="*.designer.cs"
        <MetadataKey>MetadataValue</MetadataKey>
    </Compile>
</ItemGroup>

Zobacz też