Udostępnij za pośrednictwem


Funkcje elementu

Począwszy od programu MSBuild 4.0, kod zadania i cele można wywołać funkcji elementu, aby uzyskać informacje dotyczące elementów w projekcie.Te funkcje uprościć pobieranie elementów Distinct() i są szybsze niż pętli za pomocą elementów.

Funkcje element String

Działać na dowolną wartość elementu, można użyć ciągu metod i właściwości w.NET Framework.Dla String metody, określ nazwę metody.Dla String właściwości, określ nazwę właściwości, po "get_".

Dla elementów, które mają wiele ciągów ciąg metoda lub właściwość działa na każdy ciąg.

Poniższy przykład pokazuje, jak używać tych funkcji elementu string.

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

Funkcje elementu

W tabeli poniżej wymieniono funkcje dostępne dla elementów.

Funkcja

Przykład

Opis

Count

@(MyItem->Count())

Zwraca liczbę elementów.

DirectoryName

@(MyItem->DirectoryName())

Zwraca równowartość Path.DirectoryName dla każdego elementu.

Distinct

@(MyItem->Distinct())

Zwraca elementy, które mają różne Include wartości.Metadane jest ignorowana.Porównanie jest uwzględniana wielkość liter.

DistinctWithCase

@(MyItem->DistinctWithCase())

Zwraca elementy, które mają różne itemspec wartości.Metadane jest ignorowana.Porównanie jest uwzględniana wielkość liter.

Reverse

@(MyItem->Reverse())

Zwraca elementy w kolejności odwrotnej.

AnyHaveMetadataValue

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

Zwraca boolean do wskazania, czy dowolny element ma nazwę danego metadane i wartości.Porównanie jest uwzględniana wielkość liter.

ClearMetadata

@(MyItem->ClearMetadata())

Zwraca elementy z ich metadane wyczyszczone.Tylko itemspec jest zachowywana.

HasMetadata

@(MyItem->HasMetadataValue("MetadataName")

Zwraca elementy, które mają nazwę danego metadanych.Porównanie jest uwzględniana wielkość liter.

Metadata

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

Zwraca wartości metadanych, które mają nazwę metadane.

WithMetadataValue

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

Zwraca elementy, które mają nazwę danego metadane i wartości.Porównanie jest uwzględniana wielkość liter.

Poniższy przykład pokazuje sposób używania funkcji elementu wewnętrzne.

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

Zobacz też

Koncepcje

Program MSBuild elementów