Item 요소(MSBuild)Item Element (MSBuild)

사용자 정의 항목 및 해당 메타데이터를 포함합니다.Contains a user-defined item and its metadata. MSBuildMSBuild 프로젝트에서 사용되는 모든 항목은 ItemGroup 요소의 자식으로 지정해야 합니다.Every item that is used in a MSBuildMSBuild project must be specified as a child of an ItemGroup element.

<Project><Project>
<ItemGroup><ItemGroup>
<Item><Item>

구문Syntax

<Item Include="*.cs"  
        Exclude="MyFile.cs"  
        Remove="RemoveFile.cs"  
        Condition="'String A'=='String B'" >  
    <ItemMetadata1>...</ItemMetadata1>  
    <ItemMetadata2>...</ItemMetadata2>  
</Item>  

메타데이터를 특성으로 지정Specify metadata as Attributes

MSBuild 15.1 이상에서는 현재 특성 목록과 충돌하지 않는 이름을 가진 메타데이터를 특성으로 선택적으로 표시할 수 있습니다.In MSBuild 15.1 or later, any metadata with a name that doesn't conflict with the current list of attributes can optionally be expressed as an attribute.

예를 들어 NuGet 패키지 목록을 지정하려면 일반적으로 다음과 같은 구문을 사용합니다.For example, to specify a list of NuGet packages, you would normally use something like the following syntax.

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json">
    <Version>9.0.1-beta1<Version>
  </PackageReference>
</ItemGroup>

하지만 이제 다음 구문과 같이 Version 메타데이터를 특성으로 전달할 수 있습니다.Now, however, you can pass the Version metadata as an attribute, such as in the following syntax:

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json" Version="9.0.1-beta1" />  
</ItemGroup>

특성 및 요소Attributes and Elements

다음 단원에서는 특성, 자식 요소 및 부모 요소에 대해 설명합니다.The following sections describe attributes, child elements, and parent elements.

특성Attributes

특성Attribute 설명Description
Include 필수 특성입니다.Required attribute.

항목 목록에 포함할 파일 또는 와일드카드입니다.The file or wildcard to include in the list of items.
Exclude 선택적 특성입니다.Optional attribute.

항목 목록에서 제외할 파일 또는 와일드카드입니다.The file or wildcard to exclude from the list of items.
Condition 선택적 특성입니다.Optional attribute.

평가할 조건입니다.The condition to be evaluated. 자세한 내용은 조건을 참조하세요.For more information, see Conditions.
Remove 선택적 특성입니다.Optional attribute.

항목 목록에서 제거할 파일 또는 와일드카드입니다.The file or wildcard to remove from the list of items.

KeepDuplicates 선택적 특성입니다.Optional attribute.

항목이 기존 항목의 정확한 복제본인 경우 대상 그룹에 추가할지 여부를 지정합니다.Specifies whether an item should be added to the target group if it's an exact duplicate of an existing item. 소스 항목과 대상 항목의 Include 값은 같고 메타데이터는 다르면 KeepDuplicatesfalse로 설정되어 있어도 항목이 추가됩니다.If the source and target item have the same Include value but different metadata, the item is added even if KeepDuplicates is set to false. 자세한 내용은 항목을 참조하세요.For more information, see Items.

이 특성은 ItemGroup에 포함된 Target의 항목에 대해 지정된 경우에만 유효합니다.This attribute is valid only if it's specified for an item in an ItemGroup that's in a Target.
KeepMetadata 선택적 특성입니다.Optional attribute.

대상 항목에 추가할 소스 항목의 메타데이터입니다.The metadata for the source items to add to the target items. 이름이 세미콜론으로 구분된 목록에 지정되어 있는 메타데이터만 소스 항목에서 대상 항목으로 전송됩니다.Only the metadata whose names are specified in the semicolon-delimited list are transferred from a source item to a target item. 자세한 내용은 항목을 참조하세요.For more information, see Items.

이 특성은 ItemGroup에 포함된 Target의 항목에 대해 지정된 경우에만 유효합니다.This attribute is valid only if it's specified for an item in an ItemGroup that's in a Target.
RemoveMetadata 선택적 특성입니다.Optional attribute.

대상 항목에으로 전송하지 않을 소스 항목의 메타데이터입니다.The metadata for the source items to not transfer to the target items. 이름이 세미콜론으로 구분된 이름 목록에 포함되어 있는 메타데이터를 제외한 모든 메타데이터는 소스 항목에서 대상 항목으로 전송됩니다.All metadata is transferred from a source item to a target item except metadata whose names are contained in the semicolon-delimited list of names. 자세한 내용은 항목을 참조하세요.For more information, see Items.

이 특성은 ItemGroup에 포함된 Target의 항목에 대해 지정된 경우에만 유효합니다.This attribute is valid only if it's specified for an item in an ItemGroup that's in a Target.
Update 선택적 특성입니다.Optional attribute. Visual Studio 2017 이상 버전의 .NET Core 프로젝트에만 사용할 수 있습니다.(Available only for .NET Core projects in Visual Studio 2017 or later.)

GLOB를 사용하여 포함된 파일의 메타데이터를 수정할 수 있습니다.Enables you to modify metadata of a file that was included by using a glob.

이 특성은 Target에 포함되지 않은 ItemGroup의 항목에 대해 지정된 경우에만 유효합니다.This attribute is valid only if it's specified for an item in an ItemGroup that is not in a Target.

자식 요소Child Elements

요소Element 설명Description
ItemMetadataItemMetadata 항목 메타데이터 값을 포함하는 사용자 정의 항목 메타데이터 키입니다.A user-defined item metadata key, which contains the item metadata value. 항목에는 ItemMetadata 요소가 없을 수도 있고 하나 이상 있을 수도 있습니다.There may be zero or more ItemMetadata elements in an item.

부모 요소Parent Elements

요소Element 설명Description
ItemGroupItemGroup 항목의 grouping 요소입니다.Grouping element for items.

설명Remarks

Item 요소는 빌드 시스템에 대한 입력을 정의하며 사용자 정의 컬렉션 이름을 기준으로 하여 항목 컬렉션으로 그룹화됩니다.Item elements define inputs into the build system, and are grouped into item collections based on their user-defined collection names. 이러한 항목 컬렉션은 빌드 프로세스의 단계를 수행하기 위해 컬렉션의 개별 항목을 사용하는 작업의 매개 변수로 사용할 수 있습니다.These item collections can be used as parameters for tasks, which use the individual items in the collections to perform the steps of the build process. 자세한 내용은 항목을 참조하세요.For more information, see Items.

@(myType) 표기법을 사용하면 myType 형식의 항목 컬렉션을 세미콜론으로 구분된 문자열 목록으로 확장한 다음 매개 변수로 전달할 수 있습니다.Using the notation @(myType) enables a collection of items of type myType to be expanded into a semicolon-delimited list of strings, and passed to a parameter. 매개 변수가 string 형식인 경우 매개 변수 값은 세미콜론으로 구분된 요소 목록입니다.If the parameter is of type string, then the value of the parameter is the list of elements, separated by semicolons. 매개 변수가 문자열 배열(string[])이면 각 요소는 세미콜론의 위치를 기준으로 배열에 삽입됩니다.If the parameter is an array of strings (string[]), then each element is inserted into the array based on the location of the semicolons. 작업 매개 변수가 ITaskItem[] 형식이면 값은 항목 컬렉션의 내용(연결된 메타데이터 포함)입니다.If the task parameter is of type ITaskItem[], then the value is the contents of the item collection together with any metadata attached. 세미콜론 이외의 문자를 사용하여 각 항목을 구분하려면 @(myType, '구분 기호') 구문을 사용합니다.To delimit each item by using a character other than a semicolon, use the syntax @(myType, 'separator').

MSBuildMSBuild 엔진은 *, ? 등의 와일드카드와 /**/*.cs 등의 재귀 와일드카드를 평가할 수 있습니다.The MSBuildMSBuild engine can evaluate wildcards such as * and ? and recursive wildcards such as /**/*.cs. 자세한 내용은 항목을 참조하세요.For more information, see Items.

예제Examples

다음 코드 예제에서는 CSFile 형식의 두 항목을 선언하는 방법을 보여 줍니다.The following code example shows how to declare two items of type CSFile. 두 번째로 선언된 항목은 MyMetadataHelloWorld로 설정된 메타데이터를 포함합니다.The second declared item contains metadata that has MyMetadata set to HelloWorld.

<ItemGroup>  
    <CSFile Include="engine.cs; form.cs" />  
    <CSFile Include="main.cs" >  
        <MyMetadata>HelloWorld</MyMetadata>  
    </CSFile>  
</ItemGroup>  

다음 코드 예제에서는 Update 특성을 사용하여 GLOB를 통해 포함된 somefile.cs 파일에서 메타데이터를 수정하는 방법을 보여 줍니다.The following code example shows how to use the Update attribute to modify the metadata in a file called somefile.cs that was included via a glob. Visual Studio 2017 이상 버전의 .NET Core 프로젝트에만 사용할 수 있습니다.(Available only for .NET Core projects in Visual Studio 2017 or later.)

<ItemGroup>
    <Compile Update="somefile.cs">  // or Update="*.designer.cs"
        <MetadataKey>MetadataValue</MetadataKey>
    </Compile>
</ItemGroup>  

참고 항목See Also

항목 Items
MSBuild 속성 MSBuild Properties
프로젝트 파일 스키마 참조Project File Schema Reference