Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
MSBuild-Elemente sind Eingaben im Buildsystem und stellen in der Regel Dateien dar (die Dateien werden im Include
Attribut angegeben). Elemente werden basierend auf ihren Elementnamen in Elementtypen gruppiert. Elementtypen sind benannte Listen von Elementen, die als Parameter für Aufgaben verwendet werden können. Die Aufgaben verwenden die Elementwerte, um die Schritte des Buildvorgangs auszuführen.
Da Elemente nach dem Elementtyp benannt werden, zu dem sie gehören, können die Begriffe "Element" und "Elementwert" austauschbar verwendet werden.
Erstellen von Elementen in einer Projektdatei
Sie deklarieren Elemente in der Projektdatei als untergeordnete Elemente eines ItemGroup-Elements . Gültige Elementnamen beginnen mit einem Groß- oder Kleinbuchstaben oder Unterstrich (_
); gültige nachfolgende Zeichen umfassen alphanumerische Zeichen (Buchstaben oder Ziffern), Unterstrich und Bindestrich (-
). Der Name des untergeordneten Elements ist der Typ des Elements. Das Include
Attribut des Elements gibt die Elemente (Dateien) an, die in diesen Elementtyp eingeschlossen werden sollen. Mit dem folgenden XML-Code wird beispielsweise ein Elementtyp erstellt, der den Namen Compile
hat, der zwei Dateien enthält.
<ItemGroup>
<Compile Include = "file1.cs"/>
<Compile Include = "file2.cs"/>
</ItemGroup>
Das Element file2.cs ersetzt das Element nicht file1.cs; Stattdessen wird der Dateiname an die Liste der Werte für den Compile
Elementtyp angefügt.
Der folgende XML-Code erstellt denselben Elementtyp, indem beide Dateien in einem Include
Attribut deklariert werden. Beachten Sie, dass die Dateinamen durch ein Semikolon getrennt sind.
<ItemGroup>
<Compile Include = "file1.cs;file2.cs"/>
</ItemGroup>
Das Include
Attribut ist ein Pfad, der relativ zum Ordner der Projektdatei interpretiert wird, $(MSBuildProjectPath)
auch wenn sich das Element in einer importierten Datei wie einer .targets
Datei befindet.
Erstellen von Elementen während der Ausführung
Elementen außerhalb von Target-Elementen werden während der Auswertungsphase eines Builds Werte zugewiesen. Während der nachfolgenden Ausführungsphase können Elemente wie folgt erstellt oder geändert werden:
Jeder Vorgang kann ein Element ausgeben. Zum Ausgeben eines Elements muss das Task-Element über ein untergeordnetes Output-Element verfügen, das über ein
ItemName
Attribut verfügt.Die CreateItem-Aufgabe kann ein Element ausgeben. Diese Verwendung ist veraltet.
Target
Elemente können ItemGroup-Elemente enthalten, die Elementelemente enthalten können.
Verweisen auf Elemente in einer Projektdatei
Um auf Elementtypen in der gesamten Projektdatei zu verweisen, verwenden Sie die Syntax @(ItemType)
. Sie würden z. B. auf den Elementtyp im vorherigen Beispiel verweisen, indem @(Compile)
Sie . Mithilfe dieser Syntax können Sie Elemente an Aufgaben übergeben, indem Sie den Elementtyp als Parameter dieser Aufgabe angeben. Weitere Informationen finden Sie unter How to: Select the files to build.
Standardmäßig werden die Elemente eines Elementtyps durch Semikolons getrennt (;), wenn er erweitert wird. Mit der Syntax @(ItemType, 'separator')
können Sie ein anderes Trennzeichen als die Standardeinstellung angeben. Weitere Informationen finden Sie unter How to: Display an item list separated with commas.
Verwenden von Wildcards zum Angeben von Elementen
Sie können die **
Zeichen " und *
?
"Wildcard" verwenden, um eine Gruppe von Dateien als Eingaben für einen Build anzugeben, anstatt jede Datei separat aufzulisten.
- Das
?
Wildcardzeichen entspricht einem einzelnen Zeichen. - Das
*
Wildcardzeichen entspricht null oder mehr Zeichen. - Die
**
Wildcardzeichensequenz entspricht einem teilweisen Pfad.
Sie können beispielsweise alle .cs
Dateien im Verzeichnis angeben, die die Projektdatei enthalten, indem Sie das folgende Element in der Projektdatei verwenden.
<CSFile Include="*.cs"/>
Das folgende Element wählt alle .vb
Dateien auf dem D:
Laufwerk aus:
<VBFile Include="D:/**/*.vb"/>
Wenn Sie Literale *
oder ?
Zeichen in ein Element ohne Wildcarderweiterung einschließen möchten, müssen Sie die Wildcardzeichen escapen.
Weitere Informationen zu Wildcardzeichen finden Sie unter How to: Select the files to build.
Verwenden des Exclude-Attributs
Elementelemente können das Exclude
Attribut enthalten, das bestimmte Elemente (Dateien) vom Elementtyp ausschließt. Das Exclude
Attribut wird in der Regel zusammen mit Wildcardzeichen verwendet. Mit dem folgenden XML-Code wird beispielsweise jede .cs Datei im Verzeichnis dem CSFile
Elementtyp hinzugefügt, mit Ausnahme der DoNotBuild.cs Datei.
<ItemGroup>
<CSFile Include="*.cs" Exclude="DoNotBuild.cs"/>
</ItemGroup>
Das Exclude
Attribut wirkt sich nur auf die Elemente aus, die vom Include
Attribut im Elementelement hinzugefügt werden, das beide enthält. Im folgenden Beispiel wird die Datei Form1.cs nicht ausgeschlossen, die im vorherigen Elementelement hinzugefügt wurde.
<Compile Include="*.cs" />
<Compile Include="*.res" Exclude="Form1.cs">
Weitere Informationen finden Sie unter How to: Exclude files from the build.
Elementmetadaten
Elemente können zusätzlich zu den Informationen in den Include
Und Exclude
Attributen Metadaten enthalten. Diese Metadaten können von Aufgaben verwendet werden, die weitere Informationen zu den Elementen oder zum Stapeln von Aufgaben und Zielen erfordern. Weitere Informationen finden Sie unter MSBuild Batching (Batchverarbeitung).
Metadaten sind eine Sammlung von Schlüssel-Wert-Paaren, die in der Projektdatei als untergeordnete Elemente eines Elementelements deklariert werden. Der Name des untergeordneten Elements ist der Name der Metadaten, und der Wert des untergeordneten Elements ist der Wert der Metadaten.
Die Metadaten sind dem Elementelement zugeordnet, das es enthält. Mit dem folgenden XML-Code werden beispielsweise Metadaten hinzugefügtCulture
, die sowohl dem one.cs als auch den two.cs Elementen des CSFile
Elementtyps den Wert Fr
aufweisen.
<ItemGroup>
<CSFile Include="one.cs;two.cs">
<Culture>Fr</Culture>
</CSFile>
</ItemGroup>
Ein Element kann null oder mehr Metadatenwerte enthalten. Sie können Metadatenwerte jederzeit ändern. Wenn Sie Metadaten auf einen leeren Wert festlegen, entfernen Sie sie effektiv aus dem Build.
Referenzelementmetadaten in einer Projektdatei
Mithilfe der Syntax %(ItemMetadataName)
können Sie auf Elementmetadaten in der gesamten Projektdatei verweisen. Wenn Mehrdeutigkeit vorhanden ist, können Sie einen Verweis mithilfe des Namens des Elementtyps qualifizieren. Sie können z.B. %(ItemType.ItemMetaDataName)
festlegen. Im folgenden Beispiel werden die Display
Metadaten verwendet, um die Message
Aufgabe zu stapeln. Weitere Informationen zur Verwendung von Elementmetadaten für die Batchverarbeitung finden Sie unter Elementmetadaten in der Aufgabenbatchierung.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Stuff Include="One.cs" >
<Display>false</Display>
</Stuff>
<Stuff Include="Two.cs">
<Display>true</Display>
</Stuff>
</ItemGroup>
<Target Name="Batching">
<Message Text="@(Stuff)" Condition=" '%(Display)' == 'true' "/>
</Target>
</Project>
Bekannte Elementmetadaten
Wenn einem Elementtyp ein Element hinzugefügt wird, wird diesem Element einige bekannte Metadaten zugewiesen. Beispielsweise verfügen alle Elemente über die bekannten Metadaten %(Filename)
, deren Wert der Dateiname des Elements ist (ohne die Erweiterung). Weitere Informationen finden Sie unter Bekannte Elementmetadaten.
Transformieren von Elementtypen mithilfe von Metadaten
Sie können Elementlisten mithilfe von Metadaten in neue Elementlisten umwandeln. Sie können z. B. einen Elementtyp CppFiles
mit Elementen, die Dateien darstellen.cpp
, mithilfe des Ausdrucks @(CppFiles -> '%(Filename).obj')
in eine entsprechende Liste von .obj
Dateien umwandeln.
Der folgende Code erstellt einen CultureResource
Elementtyp, der Kopien aller EmbeddedResource
Elemente mit Culture
Metadaten enthält. Der Culture
Metadatenwert wird zum Wert der neuen Metadaten CultureResource.TargetDirectory
.
<Target Name="ProcessCultureResources">
<ItemGroup>
<CultureResource Include="@(EmbeddedResource)"
Condition="'%(EmbeddedResource.Culture)' != ''">
<TargetDirectory>%(EmbeddedResource.Culture) </TargetDirectory>
</CultureResource>
</ItemGroup>
</Target>
Weitere Vorgänge zu Elementen finden Sie unter MSBuild-Elementfunktionen und Transformationen.
Elementdefinitionen
Sie können einem beliebigen Elementtyp Standardmetadaten hinzufügen, indem Sie das ItemDefinitionGroup-Element verwenden. Wie bekannte Metadaten werden die Standardmetadaten allen Elementen des von Ihnen angegebenen Elementtyps zugeordnet. Sie können Standardmetadaten in einer Elementdefinition explizit außer Kraft setzen. Die folgende XML gibt beispielsweise die Compile
Elemente one.cs und three.cs die Metadaten BuildDay
mit dem Wert "Montag" an. Der Code gibt das Element two.cs den Metadaten BuildDay
mit dem Wert "Dienstag" an.
<ItemDefinitionGroup>
<Compile>
<BuildDay>Monday</BuildDay>
</Compile>
</ItemDefinitionGroup>
<ItemGroup>
<Compile Include="one.cs;three.cs" />
<Compile Include="two.cs">
<BuildDay>Tuesday</BuildDay>
</Compile>
</ItemGroup>
Weitere Informationen finden Sie unter Elementdefinitionen.
Attribute für Elemente in einer ItemGroup eines Ziels
Target
Elemente können ItemGroup-Elemente enthalten, die Elementelemente enthalten können. Die Attribute in diesem Abschnitt sind gültig, wenn sie für ein Element in einem Element in einem ItemGroup
in einem Target
.
Attribut entfernen
Das Remove
Attribut entfernt bestimmte Elemente (Dateien) aus dem Elementtyp. Dieses Attribut wurde in .NET Framework 3.5 eingeführt (nur innerhalb von Zielen). Sowohl innerhalb als auch außerhalb von Zielen werden ab MSBuild 15.0 unterstützt.
Im folgenden Beispiel wird jede .config
Datei aus dem Compile
Elementtyp entfernt.
<Target>
<ItemGroup>
<Compile Remove="*.config"/>
</ItemGroup>
</Target>
MatchOnMetadata-Attribut
Das MatchOnMetadata
Attribut gilt nur für Remove
Attribute, die auf andere Elemente verweisen (z Remove="@(Compile);@(Content)"
. B. ) und weist den Remove
Vorgang an, Elemente basierend auf den Werten der angegebenen Metadatennamen abzugleichen, anstatt basierend auf den Elementwerten zu übereinstimmen.
Übereinstimmungsregel für B Remove="@(A)" MatchOnMetadata="M"
: Entfernen aller Elemente, aus B
denen Metadaten M
enthalten, deren Metadatenwert V
für M
jedes Element A
mit Metadaten M
des Werts V
übereinstimmt.
<Project>
<ItemGroup>
<A Include='a1' M1='1' M2='a' M3="e"/>
<A Include='b1' M1='2' M2='x' M3="f"/>
<A Include='c1' M1='3' M2='y' M3="g"/>
<A Include='d1' M1='4' M2='b' M3="h"/>
<B Include='a2' M1='x' m2='c' M3="m"/>
<B Include='b2' M1='2' m2='x' M3="n"/>
<B Include='c2' M1='2' m2='x' M3="o"/>
<B Include='d2' M1='3' m2='y' M3="p"/>
<B Include='e2' M1='3' m2='Y' M3="p"/>
<B Include='f2' M1='4' M3="r"/>
<B Include='g2' M3="s"/>
<B Remove='@(A)' MatchOnMetadata='M1;M2'/>
</ItemGroup>
<Target Name="PrintEvaluation">
<Message Text="%(B.Identity) M1='%(B.M1)' M2='%(B.M2)' M3='%(B.M3)'" />
</Target>
</Project>
Im Beispiel werden Elementwerte b2
, c2
und d2
sie werden aus dem Element B
entfernt, da:
-
b2
undc2
vomB
Spiel gegenb1
von anM1=2
A
undM2=x
-
d2
vonB
Spielen gegenc1
von anM1=3
A
undM2=y
Der Message
Vorgang gibt Folgendes aus:
a2 M1='x' M2='c' M3='m'
e2 M1='3' M2='Y' M3='p'
f2 M1='4' M2='' M3='r'
g2 M1='' M2='' M3='s'
Beispielverwendung von MatchOnMetadata
MSBuild:
<_TransitiveItemsToCopyToOutputDirectory Remove="@(_ThisProjectItemsToCopyToOutputDirectory)" MatchOnMetadata="TargetPath" MatchOnMetadataOptions="PathLike" />
Diese Zeile entfernt Elemente mit _TransitiveItemsToCopyToOutputDirectory
denselben TargetPath
Metadatenwerten aus Elementen in _ThisProjectItemsToCopyToOutputDirectory
MatchOnMetadataOptions-Attribut
Gibt die Zeichenfolgenabgleichsstrategie an, die zum Abgleichen der Metadatenwerte zwischen Elementen verwendet wird MatchOnMetadata
(Metadatennamen werden immer mit Groß-/Kleinschreibung abgeglichen). Mögliche Werte sind CaseSensitive
, CaseInsensitive
oder PathLike
. Der Standardwert ist CaseSensitive
.
PathLike
Wendet die pfadfähige Normalisierung auf die Werte an, z. B. die Normalisierung von Schrägstrichen, das Ignorieren von nachgestellten Schrägstrichen, das Entfernen .
und ..
das Festlegen aller relativen Pfade im aktuellen Verzeichnis.
KeepMetadata-Attribut
Wenn ein Element innerhalb eines Ziels generiert wird, kann das Elementelement das KeepMetadata
Attribut enthalten. Wenn dieses Attribut angegeben ist, werden nur die Metadaten, die in der durch Semikolons getrennten Liste der Namen angegeben sind, vom Quellelement in das Zielelement übertragen. Ein leerer Wert für dieses Attribut entspricht nicht der Angabe. Das KeepMetadata
Attribut wurde in .NET Framework 4.5 eingeführt.
Das folgende Beispiel veranschaulicht die Verwendung des KeepMetadata
Attributs.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="4.0">
<ItemGroup>
<FirstItem Include="rhinoceros">
<Class>mammal</Class>
<Size>large</Size>
</FirstItem>
</ItemGroup>
<Target Name="MyTarget">
<ItemGroup>
<SecondItem Include="@(FirstItem)" KeepMetadata="Class" />
</ItemGroup>
<Message Text="FirstItem: %(FirstItem.Identity)" />
<Message Text=" Class: %(FirstItem.Class)" />
<Message Text=" Size: %(FirstItem.Size)" />
<Message Text="SecondItem: %(SecondItem.Identity)" />
<Message Text=" Class: %(SecondItem.Class)" />
<Message Text=" Size: %(SecondItem.Size)" />
</Target>
</Project>
<!--
Output:
FirstItem: rhinoceros
Class: mammal
Size: large
SecondItem: rhinoceros
Class: mammal
Size:
-->
RemoveMetadata-Attribut
Wenn ein Element innerhalb eines Ziels generiert wird, kann das Elementelement das RemoveMetadata
Attribut enthalten. Wenn dieses Attribut angegeben ist, werden alle Metadaten vom Quellelement in das Zielelement übertragen, mit Ausnahme von Metadaten, deren Namen in der durch Semikolons getrennten Liste der Namen enthalten sind. Ein leerer Wert für dieses Attribut entspricht nicht der Angabe. Das RemoveMetadata
Attribut wurde in .NET Framework 4.5 eingeführt.
Das folgende Beispiel veranschaulicht die Verwendung des RemoveMetadata
Attributs.
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MetadataToRemove>Size;Material</MetadataToRemove>
</PropertyGroup>
<ItemGroup>
<Item1 Include="stapler">
<Size>medium</Size>
<Color>black</Color>
<Material>plastic</Material>
</Item1>
</ItemGroup>
<Target Name="MyTarget">
<ItemGroup>
<Item2 Include="@(Item1)" RemoveMetadata="$(MetadataToRemove)" />
</ItemGroup>
<Message Text="Item1: %(Item1.Identity)" />
<Message Text=" Size: %(Item1.Size)" />
<Message Text=" Color: %(Item1.Color)" />
<Message Text=" Material: %(Item1.Material)" />
<Message Text="Item2: %(Item2.Identity)" />
<Message Text=" Size: %(Item2.Size)" />
<Message Text=" Color: %(Item2.Color)" />
<Message Text=" Material: %(Item2.Material)" />
</Target>
</Project>
<!--
Output:
Item1: stapler
Size: medium
Color: black
Material: plastic
Item2: stapler
Size:
Color: black
Material:
-->
Weitere Vorgänge zu Elementen finden Sie unter MSBuild-Elementfunktionen.
KeepDuplicates-Attribut
Wenn ein Element innerhalb eines Ziels generiert wird, kann das Elementelement das KeepDuplicates
Attribut enthalten.
KeepDuplicates
ist ein Boolean
Attribut, das angibt, ob ein Element der Zielgruppe hinzugefügt werden soll, wenn das Element ein genaues Duplikat eines vorhandenen Elements ist.
Wenn das Quell- und Zielelement denselben Include
Wert, aber unterschiedliche Metadaten aufweisen, wird das Element hinzugefügt, auch wenn KeepDuplicates
dieser wert false
festgelegt ist. Ein leerer Wert für dieses Attribut entspricht nicht der Angabe. Das KeepDuplicates
Attribut wurde in .NET Framework 4.5 eingeführt.
Das folgende Beispiel veranschaulicht die Verwendung des KeepDuplicates
Attributs.
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Item1 Include="hourglass;boomerang" />
<Item2 Include="hourglass;boomerang" />
</ItemGroup>
<Target Name="MyTarget">
<ItemGroup>
<Item1 Include="hourglass" KeepDuplicates="false" />
<Item2 Include="hourglass" />
</ItemGroup>
<Message Text="Item1: @(Item1)" />
<Message Text=" %(Item1.Identity) Count: @(Item1->Count())" />
<Message Text="Item2: @(Item2)" />
<Message Text=" %(Item2.Identity) Count: @(Item2->Count())" />
</Target>
</Project>
<!--
Output:
Item1: hourglass;boomerang
hourglass Count: 1
boomerang Count: 1
Item2: hourglass;boomerang;hourglass
hourglass Count: 2
boomerang Count: 1
-->
Da das KeepDuplicates
Attribut die Metadaten von Elementen zusätzlich zu den Elementwerten berücksichtigt, ist es wichtig zu wissen, was mit den Metadaten geschieht. Weitere Informationen finden Sie unter "Erkennen von Duplikaten bei Verwendung der Metadatenelementfunktion".
Aktualisieren von Metadaten für Elemente in einer ItemGroup außerhalb eines Ziels
Elemente außerhalb von Zielen können ihre vorhandenen Metadaten über das Update
Attribut aktualisiert haben. Dieses Attribut ist für Elemente unter Zielen nicht verfügbar.
<Project>
<PropertyGroup>
<MetadataToUpdate>pencil</MetadataToUpdate>
</PropertyGroup>
<ItemGroup>
<Item1 Include="stapler">
<Size>medium</Size>
<Color>black</Color>
<Material>plastic</Material>
</Item1>
<Item1 Include="pencil">
<Size>small</Size>
<Color>yellow</Color>
<Material>wood</Material>
</Item1>
<Item1 Include="eraser">
<Color>red</Color>
</Item1>
<Item1 Include="notebook">
<Size>large</Size>
<Color>white</Color>
<Material>paper</Material>
</Item1>
<Item2 Include="notebook">
<Size>SMALL</Size>
<Color>YELLOW</Color>
</Item2>
<!-- Metadata can be expressed either as attributes or as elements -->
<Item1 Update="$(MetadataToUpdate);stapler;er*r;@(Item2)" Price="10" Material="">
<Color>RED</Color>
</Item1>
</ItemGroup>
<Target Name="MyTarget">
<Message Text="Item1: %(Item1.Identity)
Size: %(Item1.Size)
Color: %(Item1.Color)
Material: %(Item1.Material)
Price: %(Item1.Price)" />
</Target>
</Project>
<!--
Item1: stapler
Size: medium
Color: RED
Material:
Price: 10
Item1: pencil
Size: small
Color: RED
Material:
Price: 10
Item1: eraser
Size:
Color: RED
Material:
Price: 10
Item1: notebook
Size: large
Color: RED
Material:
Price: 10
-->
In MSBuild, Version 16.6 und höher, unterstützt das Update
Attribut qualifizierte Metadatenverweise, um das Importieren von Metadaten aus zwei oder mehr Elementen zu erleichtern.
<Project>
<ItemGroup>
<Item1 Include="stapler">
<Size>medium</Size>
<Color>black</Color>
<Material>plastic</Material>
</Item1>
<Item1 Include="pencil">
<Size>small</Size>
<Color>yellow</Color>
<Material>wood</Material>
</Item1>
<Item1 Include="eraser">
<Size>small</Size>
<Color>red</Color>
<Material>gum</Material>
</Item1>
<Item1 Include="notebook">
<Size>large</Size>
<Color>white</Color>
<Material>paper</Material>
</Item1>
<Item2 Include="pencil">
<Size>MEDIUM</Size>
<Color>RED</Color>
<Material>PLASTIC</Material>
<Price>10</Price>
</Item2>
<Item3 Include="notebook">
<Size>SMALL</Size>
<Color>BLUE</Color>
<Price>20</Price>
</Item3>
<!-- Metadata can be expressed either as attributes or as elements -->
<Item1 Update="@(Item2);er*r;@(Item3)" Size="%(Size)" Color="%(Item2.Color)" Price="%(Item3.Price)" Model="2020">
<Material Condition="'%(Item2.Material)' != ''">Premium %(Item2.Material)</Material>
</Item1>
</ItemGroup>
<Target Name="MyTarget">
<Message Text="Item1: %(Item1.Identity)
Size: %(Item1.Size)
Color: %(Item1.Color)
Material: %(Item1.Material)
Price: %(Item1.Price)
Model: %(Item1.Model)" />
</Target>
</Project>
<!--
Item1: stapler
Size: medium
Color: black
Material: plastic
Price:
Model:
Item1: pencil
Size: small
Color: RED
Material: Premium PLASTIC
Price:
Model: 2020
Item1: eraser
Size: small
Color:
Material: gum
Price:
Model: 2020
Item1: notebook
Size: large
Color:
Material: paper
Price: 20
Model: 2020
-->
Bemerkungen:
- Nicht qualifizierte Metadaten (
%(MetadataName)
) binden an den zu aktualisierenden Elementtyp (Item1
im obigen Beispiel). Qualifizierte Metadaten (%(Item2.Color)
) binden innerhalb der Gruppe erfasster übereinstimmender Elementtypen aus dem Update-Ausdruck. - Wenn ein Element mehrmals innerhalb und zwischen mehreren referenzierten Elementen übereinstimmt:
- Das letzte Vorkommen jedes referenzierten Elementtyps wird erfasst (also ein erfasstes Element pro Elementtyp).
- Dies entspricht dem Verhalten der Aufgabenelementbatchierung unter Zielen.
- Wo man %() Verweise einfügen kann:
- Metadaten
- Metadatenbedingungen
- Bei dem Metadatennamenabgleich wird die Groß-/Kleinschreibung nicht beachtet.
Aktualisieren von Metadaten für Elemente in einer ItemGroup eines Ziels
Metadaten können auch innerhalb von Zielen durch eine weniger ausdrucksstarke Syntax geändert werden als Update
:
<Project>
<ItemGroup>
<Item1 Include="stapler">
<Size>medium</Size>
<Color>black</Color>
<Material>plastic</Material>
</Item1>
<Item1 Include="pencil">
<Size>small</Size>
<Color>yellow</Color>
<Material>wood</Material>
</Item1>
<Item1 Include="eraser">
<Size>small</Size>
<Color>red</Color>
<Material>gum</Material>
</Item1>
<Item1 Include="notebook">
<Size>large</Size>
<Color>white</Color>
<Material>paper</Material>
</Item1>
<Item2 Include="pencil">
<Size>MEDIUM</Size>
<Color>RED</Color>
<Material>PLASTIC</Material>
<Price>10</Price>
</Item2>
<Item2 Include="ruler">
<Color>GREEN</Color>
</Item2>
</ItemGroup>
<Target Name="MyTarget">
<ItemGroup>
<!-- Metadata can be expressed either as attributes or as elements -->
<Item1 Size="GIGANTIC" Color="%(Item2.Color)">
<Material Condition="'%(Item2.Material)' != ''">Premium %(Item2.Material)</Material>
</Item1>
</ItemGroup>
<Message Text="Item1: %(Item1.Identity)
Size: %(Item1.Size)
Color: %(Item1.Color)
Material: %(Item1.Material)
Price: %(Item1.Price)
Model: %(Item1.Model)" />
</Target>
</Project>
<!--
Item1: stapler
Size: GIGANTIC
Color: GREEN
Material: Premium PLASTIC
Price:
Model:
Item1: pencil
Size: GIGANTIC
Color: GREEN
Material: Premium PLASTIC
Price:
Model:
Item1: eraser
Size: GIGANTIC
Color: GREEN
Material: Premium PLASTIC
Price:
Model:
Item1: notebook
Size: GIGANTIC
Color: GREEN
Material: Premium PLASTIC
Price:
Model:
-->