작업 일괄 처리의 항목 메타데이터Item Metadata in Task Batching

MSBuildMSBuild에는 항목 목록을 항목 메타데이터에 따라 여러 다른 범주 또는 일괄 처리로 나누고 각 일괄 처리를 사용하여 한 번에 하나의 작업을 실행하는 기능이 있습니다. has the ability to divide item lists into different categories, or batches, based on item metadata, and run a task one time with each batch. 어떤 항목이 어떤 일괄 처리를 통해 전달될지 정확히 이해하는 것은 어려울 수 있습니다.It can be confusing to understand exactly what items are being passed with which batch. 이 항목에서는 일괄 처리와 관련된 다음과 같은 일반적인 시나리오를 다룹니다.This topic covers the following common scenarios that involve batching.

  • 하나의 항목 목록을 일괄 처리로 나누기Dividing an item list into batches

  • 여러 항목 목록을 일괄 처리로 나누기Dividing several item lists into batches

  • 한 번에 하나씩 일괄 처리Batching one item at a time

  • 항목 목록 필터링Filtering item lists

    MSBuildMSBuild를 사용한 일괄 처리에 대한 자세한 내용은 일괄 처리를 참조하세요.For more information on batching with MSBuildMSBuild, see Batching.

하나의 항목 목록을 일괄 처리로 나누기Dividing an Item list into Batches

일괄 처리를 사용하면 항목 목록이 항목 메타데이터에 따라 여러 다른 일괄 처리로 나뉜 후 각 일괄 처리가 따로 작업으로 전달될 수 있습니다.Batching allows you to divide an item list into different batches based on item metadata, and pass each of the batches into a task separately. 이 방식은 위성 어셈블리를 빌드하는 데 유용합니다.This is useful for building satellite assemblies.

다음 예제에서는 항목 목록을 항목 메타데이터에 따라 일괄 처리로 나누는 방법을 보여 줍니다.The following example shows how to divide an item list into batches based on item metadata. ExampColl 항목 목록은 Number 항목 메타데이터에 따라 세 개의 일괄 처리로 나뉩니다.The ExampColl item list is divided into three batches based on the Number item metadata. Text 특성에 %(ExampColl.Number)가 있으면 일괄 처리가 수행되어야 한다는 알림이 MSBuildMSBuild에 제공됩니다.The presence of %(ExampColl.Number)in the Text attribute notifies MSBuildMSBuild that batching should be performed. ExampColl 항목 목록은 Number 메타데이터에 따라 세 개의 일괄 처리로 나뉘고 각 일괄 처리가 작업에 따로 전달됩니다.The ExampColl item list is divided into three batches based on the Number metadata, and each batch is passed separately into the task.

<Project  
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  

    <ItemGroup>  
        <ExampColl Include="Item1">  
            <Number>1</Number>  
        </ExampColl>  
        <ExampColl Include="Item2">  
            <Number>2</Number>  
        </ExampColl>  
        <ExampColl Include="Item3">  
            <Number>3</Number>  
        </ExampColl>  
        <ExampColl Include="Item4">  
            <Number>1</Number>  
        </ExampColl>  
        <ExampColl Include="Item5">  
            <Number>2</Number>  
        </ExampColl>  
        <ExampColl Include="Item6">  
            <Number>3</Number>  
        </ExampColl>  
    </ItemGroup>  

    <Target Name="ShowMessage">  
        <Message  
            Text = "Number: %(ExampColl.Number) -- Items in ExampColl: @(ExampColl)"/>  
    </Target>  

</Project>  

메시지 작업 작업은 다음 정보를 표시합니다.The Message Task task displays the following information:

Number: 1 -- Items in ExampColl: Item1;Item4

Number: 2 -- Items in ExampColl: Item2;Item5

Number: 3 -- Items in ExampColl: Item3;Item6

여러 항목 목록을 일괄 처리로 나누기Dividing Several Item lists into Batches

MSBuildMSBuild는 여러 항목 목록을 동일한 메타데이터에 따라 일괄 처리로 나눌 수 있습니다. can divide multiple item lists into batches based on the same metadata. 이렇게 하면 쉽게 여러 다른 항목 목록을 일괄 처리로 나누어 여러 어셈블리를 빌드할 수 있습니다.This makes it easy to divide different item lists into batches to build multiple assemblies. 예를 들어 .cs 파일의 항목 목록을 응용 프로그램 일괄 처리 및 어셈블리 일괄 처리로 나누고, 리소스 파일의 항목 목록을 응용 프로그램 일괄 처리 및 어셈블리 일괄 처리로 나눌 수 있습니다.For example, you could have an item list of .cs files divided into an application batch and an assembly batch, and an item list of resource files divided into an application batch and an assembly batch. 그런 후 일괄 처리를 사용하여 이러한 항목 목록을 하나의 작업에 전달하고 응용 프로그램 및 어셈블리를 둘 다 빌드할 수 있습니다.You could then use batching to pass these item lists into one task and build both the application and the assembly.

참고

작업에 전달되는 항목 목록에 참조된 메타데이터가 있는 항목이 없으면 해당 항목 목록의 모든 항목이 모든 일괄 처리로 전달됩니다.If an item list being passed into a task contains no items with the referenced metadata, every item in that item list is passed into every batch.

다음 예제에서는 여러 항목 목록을 항목 메타데이터에 따라 일괄 처리로 나누는 방법을 보여 줍니다.The following example shows how to divide multiple item list into batches based on item metadata. ExampCollExampColl2 항목 목록은 Number 항목 메타데이터에 따라 세 개의 일괄 처리로 나뉩니다.The ExampColl and ExampColl2 item lists are each divided into three batches based on the Number item metadata. Text 특성에 %(Number)가 있으면 일괄 처리가 수행되어야 한다는 알림이 MSBuildMSBuild에 제공됩니다.The presence of %(Number)in the Text attribute notifies MSBuildMSBuild that batching should be performed. ExampCollExampColl2 항목 목록은 Number 메타데이터에 따라 세 개의 일괄 처리로 나뉘고 각 일괄 처리가 작업에 따로 전달됩니다.The ExampColl and ExampColl2 item lists are divided into three batches based on the Number metadata, and each batch is passed separately into the task.

<Project  
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  

    <ItemGroup>  

        <ExampColl Include="Item1">  
            <Number>1</Number>  
        </ExampColl>  
        <ExampColl Include="Item2">  
            <Number>2</Number>  
        </ExampColl>  
        <ExampColl Include="Item3">  
            <Number>3</Number>  
        </ExampColl>  

        <ExampColl2 Include="Item4">  
            <Number>1</Number>  
        </ExampColl2>  
        <ExampColl2 Include="Item5">  
            <Number>2</Number>  
        </ExampColl2>  
        <ExampColl2 Include="Item6">  
            <Number>3</Number>  
        </ExampColl2>  

    </ItemGroup>  

    <Target Name="ShowMessage">  
        <Message  
            Text = "Number: %(Number) -- Items in ExampColl: @(ExampColl) ExampColl2: @(ExampColl2)"/>  
    </Target>  

</Project>  

메시지 작업 작업은 다음 정보를 표시합니다.The Message Task task displays the following information:

Number: 1 -- Items in ExampColl: Item1 ExampColl2: Item4

Number: 2 -- Items in ExampColl: Item2 ExampColl2: Item5

Number: 3 -- Items in ExampColl: Item3 ExampColl2: Item6

한 번에 하나씩 일괄 처리Batching One Item at a Time

항목이 만들어질 때 모든 항목에 할당된 잘 알려진 항목 메타데이터에 대해서도 일괄 처리를 수행할 수 있습니다.Batching can also be performed on well-known item metadata that is assigned to every item upon creation. 이를 통해 컬렉션에 있는 모든 항목이 일괄 처리에 사용할 메타데이터를 갖게 됩니다.This guarantees that every item in a collection will have some metadata to use for batching. Identity 메타데이터 값은 모든 항목에 대해 고유하므로 항목 목록에 있는 모든 항목을 별도 일괄 처리로 나누는 데 유용합니다.The Identity metadata value is unique for every item, and is useful for dividing every item in an item list into a separate batch. 잘 알려진 항목 메타데이터의 전체 목록은 잘 알려진 항목 메타데이터를 참조하세요.For a complete list of well-known item metadata, see Well-known Item Metadata.

다음 예제에서는 항목 목록의 각 항목을 한 번에 하나씩 일괄 처리로 지정하는 방법을 보여 줍니다.The following example shows how to batch each item in an item list one at a time. 모든 항목의 Identity 메타데이터 값은 고유하므로 ExampColl 항목 목록은 각각이 항목 목록의 항목 1개를 포함하는 6개의 일괄 처리로 나뉩니다.Because the Identity metadata value of every item is unique, the ExampColl item list is divided into six batches, each batch containing one item of the item list. Text 특성에 %(Identity)가 있으면 일괄 처리가 수행되어야 한다는 알림이 MSBuildMSBuild에 제공됩니다.The presence of %(Identity)in the Text attribute notifies MSBuildMSBuild that batching should be performed.

<Project  
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  

    <ItemGroup>  

        <ExampColl Include="Item1"/>  
        <ExampColl Include="Item2"/>  
        <ExampColl Include="Item3"/>  
        <ExampColl Include="Item4"/>  
        <ExampColl Include="Item5"/>  
        <ExampColl Include="Item6"/>  

    </ItemGroup>  

    <Target Name="ShowMessage">  
        <Message  
            Text = "Identity: "%(Identity)" -- Items in ExampColl: @(ExampColl)"/>  
    </Target>  

</Project>  

메시지 작업 작업은 다음 정보를 표시합니다.The Message Task task displays the following information:

Identity: "Item1" -- Items in ExampColl: Item1  
Identity: "Item2" -- Items in ExampColl: Item2  
Identity: "Item3" -- Items in ExampColl: Item3  
Identity: "Item4" -- Items in ExampColl: Item4  
Identity: "Item5" -- Items in ExampColl: Item5  
Identity: "Item6" -- Items in ExampColl: Item6  

항목 목록 필터링Filtering Item lists

일괄 처리를 사용하면 항목 목록이 작업에 전달되기 전에 특정 항목 목록을 필터링할 수 있습니다.Batching can be used to filter out certain items from an item list before passing it to a task. 예를 들어 Extension의 잘 알려진 항목 메타데이터 값에 따라 필터링을 수행하면 특정 확장명을 갖는 파일에만 작업을 실행할 수 있습니다.For example, filtering on the Extension well-known item metadata value allows you to run a task on only files with a specific extension.

다음 예제에서는 항목 목록을 항목 메타데이터에 따라 일괄 처리로 나눈 다음 해당 일괄 처리가 작업에 전달될 때 필터링하는 방법을 보여 줍니다.The following example shows how to divide an item list into batches based on item metadata, and then filter those batches when they are passed into a task. ExampColl 항목 목록은 Number 항목 메타데이터에 따라 세 개의 일괄 처리로 나뉩니다.The ExampColl item list is divided into three batches based on the Number item metadata. 작업의 Condition 특성은 Number 항목 메타데이터 값이 2인 일괄 처리만 작업으로 전달되도록 지정합니다.The Condition attribute of the task specifies that only batches with a Number item metadata value of 2 will be passed into the task

<Project  
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  

    <ItemGroup>  

        <ExampColl Include="Item1">  
            <Number>1</Number>  
        </ExampColl>  
        <ExampColl Include="Item2">  
            <Number>2</Number>  
        </ExampColl>  
        <ExampColl Include="Item3">  
            <Number>3</Number>  
        </ExampColl>  
        <ExampColl Include="Item4">  
            <Number>1</Number>  
        </ExampColl>  
        <ExampColl Include="Item5">  
            <Number>2</Number>  
        </ExampColl>  
        <ExampColl Include="Item6">  
            <Number>3</Number>  
        </ExampColl>  

    </ItemGroup>  

    <Target Name="Exec">  
        <Message  
            Text = "Items in ExampColl: @(ExampColl)"  
            Condition="'%(Number)'=='2'"/>  
    </Target>  

</Project>  

메시지 작업 작업은 다음 정보를 표시합니다.The Message Task task displays the following information:

Items in ExampColl: Item2;Item5  

참고 항목See Also

잘 알려진 항목 메타데이터 Well-known Item Metadata
Item 요소(MSBuild) Item Element (MSBuild)
ItemMetadata 요소(MSBuild) ItemMetadata Element (MSBuild)
일괄 처리 Batching
MSBuild 개념 MSBuild Concepts
MSBuild 참조MSBuild Reference