MSBuild タスク
更新 : 2007 年 11 月
ビルド プラットフォームには、ビルド プロセス中に任意の数のアクションを実行できる機能が必要です。MSBuild では、タスクを使用して、それらのアクションを実行します。タスクとは、実行可能コードにおいて、MSBuild による分割不可能なビルド処理の実行単位を表すものです。
タスクの論理
MSBuild XML プロジェクトのファイル形式では、ビルド処理を完全に実行できません。そのため、プロジェクト ファイルの外部でタスクの論理を実装する必要があります。
タスクの実行論理は、ITask インターフェイスを実装する .NET クラスとして実装され、Microsoft.Build.Framework 名前空間で定義されます。
タスク クラスは、プロジェクト ファイル内のタスクで使用可能な入力および出力パラメータも定義します。タスク クラスによって公開される、パブリックに設定可能なすべての非静的で非抽象のプロパティへは、Task 要素に同じ名前の対応する属性を配置することにより、プロジェクト ファイル内でアクセスできます。
ITask インターフェイスを実装するマネージ クラスを記述することにより、独自のタスクを作成できます。詳細については、「方法 : タスクを記述する」を参照してください。
プロジェクト ファイルからのタスクの実行
プロジェクト ファイルでタスクを実行する前に、UsingTask 要素を使用して、タスクを実装するアセンブリ内の型をタスク名に割り当てる必要があります。それによって、MSBuild は、タスクの実行論理がプロジェクト ファイル内で見つかったときに、参照先を把握できます。
MSBuild プロジェクト ファイルでタスクを実行するには、タスク名を名前に持つ要素を Target 要素の子要素として作成します。タスクがパラメータを受け取ると、これらは要素の属性として渡されます。
MSBuild 項目のコレクションおよびプロパティは、パラメータとして使用できます。たとえば、次のコードは MakeDir タスクを呼び出し、MakeDir オブジェクトの Directories プロパティの値を、前の例で宣言した BuildDir プロパティの値と同じ値に設定します。
<Target Name="MakeBuildDirectory">
<MakeDir
Directories="$(BuildDir)" />
</Target>
タスクはプロジェクト ファイルに情報を返し、後で使用するために項目またはプロパティに保存することもできます。たとえば、次のコードは Copy タスクを呼び出し、CopiedFiles 出力プロパティからの情報を SuccessfullyCopiedFiles 項目のコレクションに保存します。
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="@(MyDestFolder)">
<Output
TaskParameter="CopiedFiles"
ItemName="SuccessfullyCopiedFiles"/>
</Copy>
</Target>
含まれているタスク
MSBuild には、ファイルをコピーする Copy、ディレクトリを作成する MakeDir、Visual C# ソース コード ファイルをコンパイルする Csc など、多くのタスクが付属しています。使用可能なすべてのタスクと使用法については、「MSBuild タスク リファレンス」を参照してください。