MSBuild バッチ

更新 : 2007 年 11 月

MSBuild では、アイテム メタデータに基づいて項目のコレクションを異なるカテゴリ (バッチ) に分割し、バッチごとにターゲットまたはタスクを 1 回実行できます。

タスクのバッチ

タスクのバッチでは、項目のコレクションを異なるバッチに分割して、各バッチを個別にタスクに渡す方法を提供することにより、プロジェクト ファイルを簡略化できます。これは、プロジェクト ファイルでタスクとその属性を、複数回実行できるものであっても一度だけ宣言する必要があることを意味します。

%(ItemMetaDataName) 表記をいずれかのタスク属性で使用して、MSBuild でタスクのバッチを実行することを指定します。次の例は、Color アイテム メタデータ値に基づいて Example 項目のコレクションをバッチに分割し、各バッチを個別に MyTask タスクに渡します。

ms171473.alert_note(ja-jp,VS.90).gifメモ :

タスク属性で項目のコレクションを参照しない場合や、メタデータ名があいまいな場合は、%(ItemCollection.ItemMetaDataName) 表記を使用すると、バッチに使用するアイテム メタデータ値を完全に修飾できます。

<Project
    xmlns="https://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>

より詳細なバッチの例については、「方法 : アイテム メタデータを使用してタスクを一度に処理する」を参照してください。

ターゲットのバッチ

MSBuild は、ターゲットの入力および出力が最新かどうかを確認してから、ターゲットを実行します。入力と出力の両方が最新である場合、ターゲットはスキップされます。ターゲット内のタスクがバッチを使用する場合、MSBuild は項目の各バッチの入力および出力が最新かどうかを確認する必要があります。最新でない場合、ターゲットはヒットするたびに実行されます。

次の例に %(ItemMetaDataName) 表記の Outputs 属性を含む Target 要素を示します。MSBuild は、Color 項目メタデータに基づいて Example 項目のコレクションをバッチに分割し、各バッチの出力ファイルのタイムスタンプを分析します。バッチからの出力が最新でない場合は、ターゲットが実行されます。最新である場合は、ターゲットはスキップされます。

<Project
    xmlns="https://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>

ターゲットのバッチの別の例については、「方法 : アイテム メタデータを使用してターゲットを一度に処理する」を参照してください。

参照

概念

MSBuild の詳細な概念

参照

ItemMetadata 要素 (MSBuild)

その他の技術情報

MSBuild の概念

MSBuild リファレンス