次の方法で共有


項目用の関数

MSBuild 4.0 以降では、タスクおよびターゲットのコードで項目関数を呼び出して、プロジェクト内の項目に関する情報を取得できます。これらの関数により、Distinct() 項目の取得が簡素化され、項目をループ処理するよりも処理が速くなります。

Stringの項目関数

.NET Frameworkの項目の値を操作するには、文字列のメソッドとプロパティを使用できます。String のメソッドの場合、メソッドの名前を指定します。String のプロパティに、「get_」の後にプロパティ名を指定します。

各文字列に対して文字列、文字列のメソッドまたはプロパティの実装がある項目の場合は。

次の例は、これらの文字列の項目関数を使用する方法を示します。

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

組み込み項目関数

次の表に、項目に対して使用できる組み込み関数を示します。

Function

説明

Count

@(MyItem->Count())

項目数を返します。

DirectoryName

@(MyItem->DirectoryName())

各項目の Path.DirectoryName の値を返します。

Distinct

@(MyItem->Distinct())

Include の値を持つ項目を返します。メタデータは無視されます。比較では、大文字と小文字を区別しません。

DistinctWithCase

@(MyItem->DistinctWithCase())

itemspec の値を持つ項目を返します。メタデータは無視されます。比較では、大文字と小文字を区別します。

Reverse

@(MyItem->Reverse())

逆の項目を返します。

AnyHaveMetadataValue

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

boolean をどの項目が、指定されたメタデータの名前と値が存在するかどうかを示すを返します。比較では、大文字と小文字を区別しません。

ClearMetadata

@(MyItem->ClearMetadata())

オフのメタデータ項目を返します。itemspec のみが保持されます。

HasMetadata

@(MyItem->HasMetadataValue("MetadataName")

特定のメタデータの名前の項目を返します。比較では、大文字と小文字を区別しません。

Metadata

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

メタデータの名前を持つメタデータ値を返します。

WithMetadataValue

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

指定されたメタデータの名前と値を持つ項目を返します。比較では、大文字と小文字を区別しません。

次の例は、基本的な項目関数を使用する方法を示します。

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