다음을 통해 공유


MSBuild 항목

업데이트: 2007년 11월

항목은 빌드 시스템에 대한 입력이며 사용자가 정의한 컬렉션 이름에 따라 항목 컬렉션으로 그룹화됩니다. 이러한 항목 컬렉션은 작업의 매개 변수로 사용될 수 있으며, 이 작업은 컬렉션에 포함된 개별 항목을 사용하여 빌드 프로세스의 단계를 수행합니다.

프로젝트 파일에서 항목 만들기

항목 이름이 포함된 요소를 ItemGroup 요소의 자식으로 만들어 프로젝트 파일에서 항목을 선언합니다. 요소의 Include 특성은 항목 컬렉션에 포함할 파일을 지정합니다. 예를 들어, 다음 코드에서는 파일을 두 개 포함하는 Compile이라는 항목 컬렉션을 만듭니다.

<ItemGroup>
    <Compile Include = "file1.cs"/>
    <Compile Include = "file2.cs"/>
</ItemGroup>

다음 코드에서는 한 Include 특성에서 두 파일을 세미콜론을 구분하여 선언하는 방식으로 동일한 항목 컬렉션을 만듭니다.

<ItemGroup>
    <Compile Include = "file1.cs;file2.cs"/>
</ItemGroup>

프로젝트 파일에서 항목 참조

@(ItemCollectionName) 구문을 사용하여 프로젝트 전체에서 항목 컬렉션을 참조합니다. 예를 들어, 앞의 예제에서는 @(Compile)을 사용하여 항목 컬렉션을 참조합니다. 이 구문을 사용하면 항목 컬렉션을 작업의 매개 변수로 지정하여 해당 작업으로 전달할 수 있습니다. 자세한 내용은 방법: 와일드카드를 사용하여 디렉터리의 모든 파일 빌드를 참조하십시오.

기본적으로 항목 컬렉션의 항목은 확장될 경우 세미콜론(;)으로 구분됩니다. @(ItemCollectionName, 'separator') 구문을 사용하여 기본값이 아닌 구분 기호를 지정합니다. 자세한 내용은 방법: 항목 컬렉션을 쉼표로 구분하여 표시를 참조하십시오.

와일드카드를 사용하여 항목 지정

**, * 및 ? 와일드카드를 사용하면 각 파일을 하나씩 나열하는 대신 파일의 그룹을 빌드의 입력으로 지정할 수 있습니다. 예를 들어, 같은 디렉터리에 있는 모든 .cs 파일 또는 .vb 파일을 프로젝트 파일로 지정하려면 프로젝트 파일에 다음 요소 중 하나를 사용합니다.

<CSFile Include="*.cs"/>

- 또는 -

<VBFile Include="*.vb"/>

참고:

빌드의 입력을 지정하려는 경우에만 항목에 와일드카드를 사용할 수 있습니다. 예를 들어, Csc 작업에서 Sources 매개 변수에 대한 입력을 지정하는 데 와일드카드를 사용할 수 없습니다. MSBuild에서는 와일드카드를 매개 변수 값으로 허용하지만 문자열 리터럴로 처리하고 와일드카드를 확인하지 않습니다. 다음 예제에서는 문자열 리터럴 *.cs를 Sources 매개 변수 값으로 사용합니다.

<Target Name="Compile">
    <CSC Sources="*.cs" />
</Target>

와일드카드에 대한 자세한 내용은 방법: 와일드카드를 사용하여 디렉터리의 모든 파일 빌드를 참조하십시오.

Exclude 특성 사용

항목은 또한 항목 컬렉션에서 특정 파일을 제외하는 Exclude 특성을 포함할 수 있습니다. Exclude 특성은 와일드카드와 함께 사용될 경우 유용합니다. 예를 들어, 다음 코드에서는 DoNotBuild.cs 파일을 제외하고 디렉터리의 모든 .cs 파일을 추가합니다.

<ItemGroup>
    <CSFile
        Include="*.cs"
        Exclude="DoNotBuild.cs"/>
</ItemGroup>

자세한 내용은 방법: 디렉터리에서 파일 하나를 제외하고 모두 빌드를 참조하십시오.

항목 메타데이터

항목은 IncludeExclude 특성에서 가져온 정보뿐 아니라 메타데이터도 포함할 수 있습니다. 이 메타데이터는 항목에 대한 추가 정보를 필요로 하는 작업에 의해 사용되거나 작업 및 대상을 일괄 처리하는 데 사용될 수 있습니다. 일괄 처리에 대한 자세한 내용은 MSBuild 일괄 처리를 참조하십시오.

메타데이터 이름이 포함된 요소를 항목의 자식 요소로 만들어 프로젝트 파일에서 항목 메타데이터를 선언합니다. 한 항목에 0개 이상의 메타데이터 값이 있을 수 있습니다. 예를 들어, 다음 요소에는 Fr 값을 포함하는 Culture 메타데이터가 있습니다.

<ItemGroup>
    <CSFile Include="main.cs">
        <Culture>Fr</Culture>
    </CSFile>
</ItemGroup>

프로젝트 파일에서 항목 메타데이터 참조

%(ItemMetadataName) 구문을 사용하여 프로젝트 전체에서 항목 메타데이터를 참조합니다. 모호한 경우 %(ItemCollectionName.ItemMetaDataName)과 같이 항목 컬렉션 이름으로 항목 메타데이터를 한정할 수 있습니다. 다음 예제에서는 Display 메타데이터를 사용하여 Message 작업을 일괄 처리합니다. 일괄 처리에 항목 메타데이터를 사용하는 방법에 대한 자세한 내용은 방법: 항목 메타데이터를 사용하여 작업 일괄 처리를 참조하십시오.

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <Stuff Include="One.cs" >
            <Display>false</Display>
        </Stuff>
        <Stuff Include="Two.cs">
            <Display>true</Display>
        </Stuff>
    </ItemGroup>
    <Target Name="Batching">
        <Message Text="@(Stuff)" Condition=" '%(Display)' == 'true' "/>
    </Target>
</Project>

잘 알려진 항목 메타데이터

항목을 항목 컬렉션에 추가할 때마다 해당 항목이 만들어지고 항목의 파일 이름을 포함하는 %(Filename)처럼 잘 알려진 항목 메타데이터가 항목에 할당됩니다. 잘 알려진 항목 메타데이터의 전체 목록은 MSBuild 잘 알려인 항목 메타데이터를 참조하십시오.

항목 컬렉션 변환

항목 컬렉션을 새 항목 컬렉션으로 변환할 수 있습니다. 예를 들어, .cpp 파일의 항목 컬렉션은 @(CppFiles -> '%(Filename).obj')와 같은 식을 사용하여 .obj 파일 컬렉션으로 변환될 수 있습니다. 자세한 내용은 MSBuild 변환을 참조하십시오.

참고 항목

작업

방법: 와일드카드를 사용하여 디렉터리의 모든 파일 빌드

방법: 디렉터리에서 파일 하나를 제외하고 모두 빌드

개념

MSBuild 일괄 처리

MSBuild 작업

참조

ItemGroup 요소(MSBuild)

Item 요소(MSBuild)

ItemMetadata 요소(MSBuild)

MSBuild 잘 알려인 항목 메타데이터