ElementfunktionenItem functions

Code in Aufgaben und Zielen kann Elementfunktionen aufrufen, um Informationen zu den Elementen im Projekt zu erhalten (MSBuild 4.0 und höher).Code in tasks and targets can call item functions to get information about the items in the project (in MSBuild 4.0 and later). Diese Funktionen vereinfachen das Abrufen von distinct-Elementen, und mit ihnen erfolgt der Abruf schneller als beim Durchlaufen der Elemente.These functions simplify getting distinct items and are faster than looping through the items.

ZeichenfolgenelementfunktionenString item functions

Sie können Zeichenfolgenmethoden und -eigenschaften in .NET Framework für jeden Elementwert verwenden.You can use string methods and properties in the .NET Framework to operate on any item value. Geben Sie für String-Methoden den Methodennamen an.For String methods, specify the method name. Geben Sie für String-Eigenschaften den Eigenschaftennamen hinter „get_“ an.For String properties, specify the property name after "get_".

Für Elemente mit mehreren Zeichenfolgen wird die Zeichenfolgenmethode oder -eigenschaft für jede Zeichenfolge ausgeführt.For items that have multiple strings, the string method or property runs on each string.

Das folgende Beispiel veranschaulicht die Verwendung dieser Zeichenfolgenelementfunktionen.The following example shows how to use these string item functions.

<ItemGroup>
    <theItem Include="andromeda;tadpole;cartwheel" />
</ItemGroup>

<Target Name = "go">
    <Message Text="IndexOf  @(theItem->IndexOf('r'))" />
    <Message Text="Replace  @(theItem->Replace('tadpole', 'pinwheel'))" />
    <Message Text="Length   @(theItem->get_Length())" />
    <Message Text="Chars    @(theItem->get_Chars(2))" />
</Target>

  <!--
  Output:
    IndexOf  3;-1;2
    Replace  andromeda;pinwheel;cartwheel
    Length   9;7;9
    Chars    d;d;r
  -->

Intrinsische ElementfunktionenIntrinsic item functions

In der unten stehenden Tabelle werden die systeminternen Funktionen aufgelistet, die für Elemente zur Verfügung stehen.The table below lists the intrinsic functions available for items.

FunktionFunction BeispielExample BeschreibungDescription
Count @(MyItem->Count()) Gibt die Anzahl der Elemente zurückReturns the count of the items.
DirectoryName @(MyItem->DirectoryName()) Gibt das entsprechende Path.DirectoryName-Objekt für jedes Element zurückReturns the equivalent of Path.DirectoryName for each item.
Distinct @(MyItem->Distinct()) Gibt Elemente zurück, die eindeutige Include-Werte aufweisenReturns items that have distinct Include values. Metadaten werden ignoriert.Metadata is ignored. Beim Vergleich wird die Groß- und Kleinschreibung nicht berücksichtigt.The comparison is case insensitive.
DistinctWithCase @(MyItem->DistinctWithCase()) Gibt Elemente zurück, die eindeutige itemspec-Werte aufweisenReturns items that have distinct itemspec values. Metadaten werden ignoriert.Metadata is ignored. Beim Vergleich wird die Groß- und Kleinschreibung berücksichtigt.The comparison is case sensitive.
Reverse @(MyItem->Reverse()) Gibt die Elemente in umgekehrter Reihenfolge zurückReturns the items in reverse order.
AnyHaveMetadataValue @(MyItem->AnyHaveMetadataValue("MetadataName", "MetadataValue")) Gibt einen boolean-Wert zurück, der angibt, ob ein Element einen angegebenen Metadatennamen und -wert aufweist.Returns a boolean to indicate whether any item has the given metadata name and value. Beim Vergleich wird die Groß- und Kleinschreibung nicht berücksichtigt.The comparison is case insensitive.
ClearMetadata @(MyItem->ClearMetadata()) Gibt Elemente mit gelöschten Metadaten zurück.Returns items with their metadata cleared. Nur das itemspec-Objekt wird beibehalten.Only the itemspec is retained.
HasMetadata @(MyItem->HasMetadata("MetadataName")) Gibt Elemente zurück, die den angegebenen Metadatennamen aufweisenReturns items that have the given metadata name. Beim Vergleich wird die Groß- und Kleinschreibung nicht berücksichtigt.The comparison is case insensitive.
Metadata @(MyItem->Metadata("MetadataName")) Gibt die Werte der Metadaten zurück, die den Metadatennamen aufweisenReturns the values of the metadata that have the metadata name.
WithMetadataValue @(MyItem->WithMetadataValue("MetadataName", "MetadataValue")) Gibt Elemente zurück, die den angegebenen Metadatennamen und -wert aufweisen.Returns items that have the given metadata name and value. Beim Vergleich wird die Groß- und Kleinschreibung nicht berücksichtigt.The comparison is case insensitive.

In folgendem Beispiel wird veranschaulicht, wie Sie systeminterne Elementfunktionen verwenden können.The following example shows how to use intrinsic item functions.

<ItemGroup>
    <TheItem Include="first">
        <Plant>geranium</Plant>
    </TheItem>
    <TheItem Include="second">
        <Plant>algae</Plant>
    </TheItem>
    <TheItem Include="third">
        <Plant>geranium</Plant>
    </TheItem>
</ItemGroup>

<Target Name="go">
    <Message Text="MetaData:    @(TheItem->Metadata('Plant'))" />
    <Message Text="HasMetadata: @(theItem->HasMetadata('Plant'))" />
    <Message Text="WithMetadataValue: @(TheItem->WithMetadataValue('Plant', 'geranium'))" />
    <Message Text=" " />
    <Message Text="Count:   @(theItem->Count())" />
    <Message Text="Reverse: @(theItem->Reverse())" />
</Target>

  <!--
  Output:
    MetaData:    geranium;algae;geranium
    HasMetadata: first;second;third
    WithMetadataValue: first;third

    Count:   3
    Reverse: third;second;first
  -->

MSBuild-BedingungsfunktionenMSBuild condition functions

Die Funktionen Exists und HasTrailingSlash sind keine Elementfunktionen.The functions Exists and HasTrailingSlash are not item functions. Sie können mit dem Condition-Attribut verwendet werden.They are available for use with the Condition attribute. Weitere Informationen finden Sie unter MSBuild-Bedingungen.See MSBuild conditions.

Siehe auchSee also