MSBuild タスク

ビルド プラットフォームでは、ビルドの処理中に、いくつかのアクションを実行する権限が必要です。 MSBuild はタスクを使用して、これらのアクションを実行します。 タスクとは、分割不可能なビルド操作を実行するために MSBuild で使用される実行可能コードの単位です。

タスクのロジック

MSBuild XML プロジェクト ファイル形式はそれ自体でビルド操作を完全に実行することができないため、プロジェクト ファイルの外部でタスクのロジックを実装する必要があります。

タスクの実行ロジックは、Microsoft.Build.Framework 名前空間で定義されている、ITask インターフェイスを実装する .NET クラスとして実装されます。

タスク クラスは、プロジェクト ファイル内のタスクで使用可能な入力パラメーターと出力パラメーターも定義します。 タスク クラスによって公開されている、パブリックに設定可能な非静的かつ非抽象のプロパティはどれも、プロジェクト ファイル内でアクセスできます。そのためには、同じ名前を持つ、対応する属性を Task 要素に指定します。

ITask インターフェイスを実装するマネージ クラスを記述すれば、独自のタスクを作成できます。 詳細については、「タスクの作成」を参照してください。

プロジェクト ファイルからのタスクの実行

プロジェクト ファイルでタスクを実行する前に、まずタスクを実装するアセンブリ内の型を、UsingTask 要素でタスク名にマップする必要があります。 これにより、MSBuild は、プロジェクト ファイルでタスクを見つけたら、どこでその実行ロジックを探すかが把握できます。

MSBuild プロジェクト ファイルのタスクを実行するには、Target 要素の子として、そのタスクの名前を持つ要素を作成します。 タスクがパラメーターを受け取る場合、パラメーターは要素の属性として渡されます。

MSBuild の項目一覧とプロパティはパラメーターとして使用できます。 たとえば、次のコードは MakeDir タスクを呼び出し、MakeDir オブジェクトの Directories プロパティの値を、前の例で宣言された BuildDir プロパティの値に等しくなるよう設定します。

<Target Name="MakeBuildDirectory">  
    <MakeDir  
        Directories="$(BuildDir)" />  
</Target>  

また、タスクはプロジェクト ファイルに情報を返すこともできます。この情報は、後で使用するために項目またはプロパティに格納できます。 たとえば、次のコードは Copy タスクを呼び出して、SuccessfullyCopiedFiles 項目一覧に CopiedFiles 出力プロパティからの情報を格納します。

<Target Name="CopyFiles">  
    <Copy  
        SourceFiles="@(MySourceFiles)"  
        DestinationFolder="@(MyDestFolder)">  
        <Output  
            TaskParameter="CopiedFiles"  
            ItemName="SuccessfullyCopiedFiles"/>  
     </Copy>  
</Target>  

含まれているタスク

MSBuild には、ファイルをコピーする Copy、ディレクトリを作成する MakeDir、Visual C# ソース コード ファイルをコンパイルする Csc など、多数のタスクが装備されています。 使用可能なすべてのタスクと使用法については、「Task Reference (タスク リファレンス)」を参照してください。

オーバーライドされたタスク

MSBuild は、複数の場所でタスクを検索します。 最初の検索場所は、.NET Framework ディレクトリに格納されている拡張子が .OverrideTasks であるファイル内です。 これらのファイル内のタスクは、プロジェクト ファイル内のタスクも含め、同じ名前を持つ他のタスクをオーバーライドします。 2 番目の検索場所は、.NET Framework ディレクトリ内の拡張子が .Tasks であるファイル内です。 タスクがこれらの場所のいずれにも見つからない場合は、プロジェクト ファイル内のタスクが使用されます。

関連項目

MSBuild の概念
MSBuild
タスクの作成
インライン タスク