Freigeben über


Elementfunktionen

Ab MSBuild 4.0 kann Code in Aufgaben und Zielen Elementfunktionen aufrufen, um Informationen über die Elemente im Projekt abzurufen.Diese Funktionen vereinfachen das Abrufen von Distinct()-Elementen, und mit ihnen erfolgt der Abruf schneller als beim Durchlaufen der Elemente.

Zeichenfolgen-Element-Funktionen

Sie können Zeichenfolgenmethoden und Eigenschaften in .NET Framework verwenden, um jeden Elementwert an auszuführen.Für String-Methoden geben Sie den Methodennamen an.Für String-Eigenschaften geben Sie den Eigenschaftennamen nach "get_" an.

Bei Elementen, die mehrere Zeichenfolgen, die Zeichenfolgenmethode oder die Eigenschaftausführungen auf jeder Zeichenfolge enthalten.

Das folgende Beispiel zeigt, wie diese String Elementfunktionen verwendet.

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

Systeminterne Element-Funktionen

In der folgenden Tabelle werden die systeminternen Funktionen aufgeführt, die für Elemente verfügbar sind.

Funktion

Beispiel

Description

Count

@(MyItem->Count())

Gibt die Anzahl der Elemente zurück.

DirectoryName

@(MyItem->DirectoryName())

Gibt die Entsprechung von Path.DirectoryName für jedes Element zurück.

Distinct

@(MyItem->Distinct())

Gibt Elemente zurück, die Include unterschiedliche Werte aufweisen.Metadaten werden ignoriert.Beim Vergleich wird die Groß- und Kleinschreibung nicht berücksichtigt.

DistinctWithCase

@(MyItem->DistinctWithCase())

Gibt Elemente zurück, die itemspec unterschiedliche Werte aufweisen.Metadaten werden ignoriert.Beim Vergleich wird die Groß- und Kleinschreibung berücksichtigt.

Reverse

@(MyItem->Reverse())

Gibt die in umgekehrter Reihenfolge zurück.

AnyHaveMetadataValue

@(MyItem->AnyHaveMetadataValue("MetadataName", "MetadataValue"))

Gibt boolean zurück, um anzugeben, ob jedes Element den angegebenen Metadaten und den Wert hat.Beim Vergleich wird die Groß- und Kleinschreibung nicht berücksichtigt.

ClearMetadata

@(MyItem->ClearMetadata())

Gibt Elemente mit gelöschten Metadaten zurück.Nur itemspec wird beibehalten.

HasMetadata

@(MyItem->HasMetadataValue("MetadataName")

Gibt Elemente zurück, die den angegebenen Metadatennamen haben.Beim Vergleich wird die Groß- und Kleinschreibung nicht berücksichtigt.

Metadata

@(MyItem->Metadata("MetadataName"))

Gibt die Werte der Metadaten zurück, die den Metadaten verfügen.

WithMetadataValue

@(MyItem->WithMetadataValue("MetadataName", "MetadataValue")

Gibt Elemente zurück, die den angegebenen Metadaten und den Wert haben.Beim Vergleich wird die Groß- und Kleinschreibung nicht berücksichtigt.

Im folgenden Beispiel wird gezeigt, wie systeminternes Element funktioniert verwendet.

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

Siehe auch

Konzepte

MSBuild-Elemente