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 MatchOnMetadata element . Możliwe wartości to CaseSensitive , CaseInsensitive lub 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 false wartość . Aby uzyskać więcej informacji, zobacz Elementy.Ten atrybut jest prawidłowy tylko wtedy, gdy jest określony dla elementu w obiekcie w elemencie ItemGroup Target . |
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 ItemGroup Target . |
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 ItemGroup Target . |
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
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 HelloWorld
wartość .
<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>