ターゲットのバッチの項目メタデータItem Metadata in Target Batching

MSBuildMSBuild では、ビルド ターゲットの入力と出力の依存関係分析を分析できます。 has the ability to perform dependency analysis on the inputs and outputs of a build target. ターゲットの入力または出力が最新の状態であると判断された場合、ターゲットはスキップされ、ビルドが進行します。If it is determined that the inputs or outputs of the target are up-to-date, the target will be skipped and the build will procede. Target 要素は Inputs 属性と Outputs 属性を利用し、依存関係分析中に検査する項目を指定します。Target elements use the Inputs and Outputs attributes to specify the items to inspect during dependency analysis.

入力または出力としてバッチの項目を利用するタスクがターゲットに含まれる場合、ターゲットの Target 要素では、既に最新の状態になっている項目のバッチを MSBuildMSBuild でスキップするために、その Inputs または Outputs 属性でバッチ処理を利用する必要があります。If a target contains a task that uses batched items as inputs or outputs, the Target element of the target should use batching in its Inputs or Outputs attributes to enable MSBuildMSBuild to skip batches of items that are already up-to-date.

ターゲットのバッチ処理Batching Targets

次の例には、Culture 項目メタデータに基づいて 2 つのバッチに分割されている Res という名前の項目一覧が含まれています。The following example contains an item list named Res that is divided into two batches based on the Culture item metadata. これらのバッチのいずれも AL タスクに渡されます。このタスクで、バッチごとに出力アセンブリが作成されます。Each of these batches is passed into the AL task, which creates an output assembly for each batch. Target 要素の Outputs 属性でバッチ処理を利用することで、MSBuildMSBuild では、ターゲットを実行する前に、個々のバッチが最新の状態になっているか判断できます。By using batching on the Outputs attribute of the Target element, MSBuildMSBuild can determine if each of the individual batches is up-to-date before running the target. ターゲットのバッチ処理を利用しないと、ターゲットが実行されるたびに項目の両方のバッチが実行されます。Without using target batching, both batches of items would be run by the task every time the target was executed.

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

    <ItemGroup>  
        <Res Include="Strings.fr.resources">  
            <Culture>fr</Culture>  
        </Res>  
        <Res Include="Strings.jp.resources">  
            <Culture>jp</Culture>  
        </Res>  
        <Res Include="Menus.fr.resources">  
            <Culture>fr</Culture>  
        </Res>  
        <Res Include="Dialogs.fr.resources">  
            <Culture>fr</Culture>  
        </Res>  
        <Res Include="Dialogs.jp.resources">  
            <Culture>jp</Culture>  
        </Res>  
        <Res Include="Menus.jp.resources">  
            <Culture>jp</Culture>  
        </Res>  
    </ItemGroup>  

    <Target Name="Build"  
        Inputs="@(Res)"  
        Outputs="%(Culture)\MyApp.resources.dll">  

        <AL Resources="@(Res)"  
            TargetType="library"  
            OutputAssembly="%(Culture)\MyApp.resources.dll"  

    </Target>  

</Project>  

関連項目See Also

方法 : インクリメンタル ビルドを実行する How to: Build Incrementally
バッチ Batching
Target 要素 (MSBuild) Target Element (MSBuild)
タスクのバッチの項目メタデータItem Metadata in Task Batching