항목 함수Item Functions

MSBuild 4.0부터 작업 및 대상의 코드는 프로젝트의 항목에 대한 정보를 얻기 위해 item 함수를 호출할 수 있습니다.Starting with MSBuild 4.0, code in tasks and targets can call item functions to get information about the items in the project. 이러한 함수를 사용하면 Distinct() 항목을 간편하게 가져올 수 있으며 항목을 반복하는 방식보다 속도도 더 빠릅니다.These functions simplify getting Distinct() items and are faster than looping through the items.

문자열 항목 함수String Item Functions

.NET Framework에서 문자열 메서드 및 속성을 사용하여 모든 항목 값을 작동할 수 있습니다.You can use string methods and properties in the .NET Framework to operate on any item value. <xref:System.String> 메서드의 경우 메서드 이름을 지정합니다.For <xref:System.String> methods, specify the method name. <xref:System.String> 속성의 경우 "get_" 뒤에 속성 이름을 지정합니다.For <xref:System.String> properties, specify the property name after "get_".

여러 문자열에 있는 항목의 경우 문자열 메서드 또는 속성이 각 문자열에서 실행됩니다.For items that have multiple strings, the string method or property runs on each string.

다음 예제에서는 이러한 문자열 항목 함수를 사용하는 방법을 보여 줍니다.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  
  -->  

내장 항목 함수Intrinsic Item Functions

아래 표는 항목에 사용할 수 있는 내장 함수를 나열합니다.The table below lists the intrinsic functions available for items.

함수Function Example 설명Description
Count @(MyItem->Count()) 항목 수를 반환합니다.Returns the count of the items.
DirectoryName @(MyItem->DirectoryName()) 각 항목에 대한 해당 Path.DirectoryName을 반환합니다.Returns the equivalent of Path.DirectoryName for each item.
Distinct @(MyItem->Distinct()) 고유한 Include 값이 있는 항목을 반환합니다.Returns items that have distinct Include values. 메타데이터는 무시됩니다.Metadata is ignored. 비교 시 대/소문자가 구분되지 않습니다.The comparison is case insensitive.
DistinctWithCase @(MyItem->DistinctWithCase()) 고유한 itemspec 값이 있는 항목을 반환합니다.Returns items that have distinct itemspec values. 메타데이터는 무시됩니다.Metadata is ignored. 비교 시 대/소문자가 구분됩니다.The comparison is case sensitive.
Reverse @(MyItem->Reverse()) 항목을 역순으로 반환합니다.Returns the items in reverse order.
AnyHaveMetadataValue @(MyItem->AnyHaveMetadataValue("MetadataName", "MetadataValue")) 모든 항목에 지정된 메타데이터 이름 및 값이 있는지 여부를 나타내도록 boolean을 반환합니다.Returns a boolean to indicate whether any item has the given metadata name and value. 비교 시 대/소문자가 구분되지 않습니다.The comparison is case insensitive.
ClearMetadata @(MyItem->ClearMetadata()) 해당 메타데이터가 지워진 항목을 반환합니다.Returns items with their metadata cleared. itemspec만 유지됩니다.Only the itemspec is retained.
HasMetadata @(MyItem->HasMetadata("MetadataName")) 지정된 메타데이터 이름을 가진 항목을 반환합니다.Returns items that have the given metadata name. 비교 시 대/소문자가 구분되지 않습니다.The comparison is case insensitive.
Metadata @(MyItem->Metadata("MetadataName")) 메타데이터 이름을 포함하는 메타데이터의 값을 반환합니다.Returns the values of the metadata that have the metadata name.
WithMetadataValue @(MyItem->WithMetadataValue("MetadataName", "MetadataValue")) 지정된 메타데이터 이름 및 값을 가진 항목을 반환합니다.Returns items that have the given metadata name and value. 비교 시 대/소문자가 구분되지 않습니다.The comparison is case insensitive.

다음 예제에서는 내장 항목 함수를 사용하는 방법을 보여 줍니다.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  
  -->  

참고 항목See Also

항목Items