Udostępnij przez


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>
  <Grupa elementów>
   <Przedmiot>

Składnia

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

Określanie metadanych jako atrybutów

Metadane elementu można określić jako atrybuty jako elementy podrzędne. Wszelkie metadane o nazwie, które nie powodują konfliktu z bieżącą listą atrybutów, mogą być 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.

Attributes

Attribute Description
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. Domyślna wartość 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 Items.

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 Items.

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 Items.

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 początkowym określeniu grupy elementów (np. 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

Składnik Description
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.

Program MSBuild interpretuje elementy podrzędne w elementach elementu jako metadane elementu.

Elementy nadrzędne

Składnik Description
Grupa elementów 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 Items.

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 Items.

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>

Poniższy przykład kodu pokazuje, jak użyć atrybutu Update do 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 także