MSBuild 일괄 처리MSBuild Batching

MSBuildMSBuild에는 항목 목록을 항목 메타데이터에 따라 여러 다른 범주 또는 일괄 처리로 나누고 각 일괄 처리를 사용하여 한 번에 하나의 대상 또는 작업을 실행하는 기능이 있습니다. has the ability to divide item lists into different categories, or batches, based on item metadata, and run a target or task one time with each batch.

작업 일괄 처리Task Batching

작업 일괄 처리를 사용하면 항목 목록을 다른 일괄 처리로 나누고 해당 일괄 처리 각각을 별도로 작업에 전달하는 방법을 제공하여 프로젝트 파일을 간소화할 수 있습니다.Task batching allows you to simplify your project files by providing a way to divide item lists into different batches and pass each of those batches into a task separately. 즉, 프로젝트 파일은 여러 번 실행될 수 있지만 작업 및 해당 특성을 한 번만 선언해야 합니다.This means that a project file only needs to have the task and its attributes declared once, even though it can be run several times.

작업 특성 중 하나에서 %(ItemMetaDataName) 표기법을 사용하여 MSBuildMSBuild가 작업에서 일괄 처리를 수행하도록 지정합니다.You specify that you want MSBuildMSBuild to perform batching with a task by using the %(ItemMetaDataName) notation in one of the task attributes. 다음 예제에서는 Example 항목 목록을 Color 항목 메타데이터 값에 기반한 일괄 처리로 분할하고 일괄 처리 각각을 MyTask 작업에 개별적으로 전달합니다.The following example splits the Example item list into batches based on the Color item metadata value, and passes each of the batches to the MyTask task separately.

참고

작업 특성의 다른 위치에서 항목 목록을 참조하지 않거나 메타데이터 이름이 모호할 수 있는 경우 %(ItemCollection.ItemMetaDataName) 표기법을 사용하여 일괄 처리에 사용할 항목 메타데이터 값을 정규화할 수 있습니다.If you do not reference the item list elsewhere in the task attributes, or the metadata name may be ambiguous, you can use the %(ItemCollection.ItemMetaDataName) notation to fully qualify the item metadata value to use for batching.

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

    <ItemGroup>  
        <Example Include="Item1">  
            <Color>Blue</Color>  
        </Example>  
        <Example Include="Item2">  
            <Color>Red</Color>  
        </Example>  
    </ItemGroup>  

    <Target Name="RunMyTask">  
        <MyTask  
            Sources = "@(Example)"  
            Output = "%(Color)\MyFile.txt"/>  
    </Target>  

</Project>  

특정 일괄 처리 예제는 작업 일괄 처리의 항목 메타데이터를 참조하세요.For more specific batching examples, see Item Metadata in Task Batching.

대상 일괄 처리Target Batching

MSBuildMSBuild는 대상이 실행되기 전에 대상의 입력 및 출력이 최신 상태인지를 확인합니다. checks if the inputs and outputs of a target are up-to-date before it runs the target. 입력 및 출력이 모두 최신 상태인 경우 대상을 건너뜁니다.If both inputs and outputs are up-to-date, the target is skipped. 대상 내의 작업이 일괄 처리를 사용하는 경우 MSBuildMSBuild는 항목의 각 일괄 처리에 대한 입력 및 출력이 최신 상태인지를 확인해야 합니다.If a task inside of a target uses batching, MSBuildMSBuild needs to determine if the inputs and outputs for each batch of items is up-to-date. 그렇지 않으면 대상이 적중될 때마다 실행됩니다.Otherwise, the target is executed every time it is hit.

다음 예제에서는 %(ItemMetaDataName) 표기법을 사용하는 Outputs 특성이 포함된 Target 요소를 보여줍니다.The following example shows a Target element that contains an Outputs attribute with the %(ItemMetaDataName) notation. MSBuildMSBuildExample 항목 목록을 Color 항목 메타데이터를 기반으로 하는 일괄 처리로 나누고, 각 일괄 처리에 대한 출력 파일의 타임스탬프를 분석합니다. will divide the Example item list into batches based on the Color item metadata, and analyze the timestamps of the output files for each batch. 일괄 처리의 출력이 최신 상태인 경우 대상이 실행됩니다.If the outputs from a batch are not up-to-date, the target is run. 그렇지 않으면 대상을 건너뜁니다.Otherwise, the target is skipped.

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

    <ItemGroup>  
        <Example Include="Item1">  
            <Color>Blue</Color>  
        </Example>  
        <Example Include="Item2">  
            <Color>Red</Color>  
        </Example>  
    </ItemGroup>  

    <Target Name="RunMyTask"  
        Inputs="@(Example)"  
        Outputs="%(Color)\MyFile.txt">  
        <MyTask  
            Sources = "@(Example)"  
            Output = "%(Color)\MyFile.txt"/>  
    </Target>  

</Project>  

대상 일괄 처리의 또 다른 예제는 대상 일괄 처리의 항목 메타데이터를 참조하세요.For another example of target batching, see Item Metadata in Target Batching.

메타데이터를 사용하는 속성 함수Property Functions Using Metadata

메타데이터를 포함하는 속성 함수에서 일괄 처리를 제어할 수 있습니다.Batching can be controlled by property functions that include metadata. 예를 들어 개체에 적용된For example,

$([System.IO.Path]::Combine($(RootPath),%(Compile.Identity)))

Combine를 사용하여 컴파일 항목 경로와 루트 폴더 경로를 결합합니다.uses Combine to combine a root folder path with a Compile item path.

속성 함수는 메타데이터 값 내에 나타나지 않을 수 있습니다.Property functions may not appear within metadata values. 예를 들어 개체에 적용된For example,

%(Compile.FullPath.Substring(0,3))

사용할 수 없습니다.is not allowed.

속성 함수에 대한 자세한 내용은 속성 함수를 참조하세요.For more information about property functions, see Property Functions.

참고 항목See Also

ItemMetadata 요소(MSBuild) ItemMetadata Element (MSBuild)
MSBuild 개념 MSBuild Concepts
MSBuild 참조 MSBuild Reference
고급 개념Advanced Concepts