MSBuild タスクMSBuild Tasks

ビルド プラットフォームでは、ビルドの処理中に、いくつかのアクションを実行する権限が必要です。A build platform needs the ability to execute any number of actions during the build process. MSBuildMSBuildタスクを使用して、これらのアクションを実行します。 uses tasks to perform these actions. タスクとは、分割不可能なビルド操作を実行するために MSBuildMSBuild で使用される実行可能コードの単位です。A task is a unit of executable code used by MSBuildMSBuild to perform atomic build operations.

タスクのロジックTask Logic

MSBuildMSBuild XML プロジェクト ファイル形式はそれ自体でビルド操作を完全に実行することができないため、プロジェクト ファイルの外部でタスクのロジックを実装する必要があります。The MSBuildMSBuild XML project file format cannot fully execute build operations on its own, so task logic must be implemented outside of the project file.

タスクの実行ロジックは、Microsoft.Build.Framework 名前空間で定義されている ITask インターフェイスを実装する .NET クラスとして実装されます。The execution logic of a task is implemented as a .NET class that implements the ITask interface, which is defined in the Microsoft.Build.Framework namespace.

タスク クラスは、プロジェクト ファイル内のタスクで使用可能な入力パラメーターと出力パラメーターも定義します。The task class also defines the input and output parameters available to the task in the project file. タスク クラスによって公開されている、パブリックに設定可能な非静的かつ非抽象のプロパティはどれも、プロジェクト ファイル内でアクセスできます。そのためには、同じ名前を持つ、対応する属性を Task 要素に指定します。All public settable non-static non-abstract properties exposed by the task class can be accessed in the project file by placing a corresponding attribute with the same name on the Task element.

ITask インターフェイスを実装するマネージ クラスを記述することにより、独自のタスクを作成できます。You can write your own task by authoring a managed class that implements the ITask interface. 詳細については、「タスクの作成」を参照してください。For more information, see Task Writing.

プロジェクト ファイルからのタスクの実行Executing a Task from a Project File

プロジェクト ファイルでタスクを実行する前に、まずタスクを実装するアセンブリ内の型を、UsingTask 要素でタスク名にマップする必要があります。Before executing a task in your project file, you must first map the type in the assembly that implements the task to the task name with the UsingTask element. これにより、MSBuildMSBuild は、プロジェクト ファイルでタスクを見つけたら、どこでその実行ロジックを探すかが把握できます。This lets MSBuildMSBuild know where to look for the execution logic of your task when it finds it in your project file.

MSBuildMSBuild プロジェクト ファイルのタスクを実行するには、Target 要素の子として、そのタスクの名前を持つ要素を作成します。To execute a task in an MSBuildMSBuild project file, create an element with the name of the task as a child of a Target element. タスクがパラメーターを受け取る場合、パラメーターは要素の属性として渡されます。If a task accepts parameters, these are passed as attributes of the element.

MSBuildMSBuild の項目一覧とプロパティはパラメーターとして使用できます。 item lists and properties can be used as parameters. たとえば、次のコードは MakeDir タスクを呼び出し、MakeDir オブジェクトの Directories プロパティの値を、前の例で宣言された BuildDir プロパティの値に等しくなるよう設定します。For example, the following code calls the MakeDir task and sets the value of the Directories property of the MakeDir object equal to the value of the BuildDir property declared in the previous example.

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

また、タスクはプロジェクト ファイルに情報を返すこともできます。この情報は、後で使用するために項目またはプロパティに格納できます。Tasks can also return information to the project file, which can be stored in items or properties for later use. たとえば、次のコードは Copy タスクを呼び出して、SuccessfullyCopiedFiles 項目一覧に CopiedFiles 出力プロパティからの情報を格納します。For example, the following code calls the Copy task and stores the information from the CopiedFiles output property in the SuccessfullyCopiedFiles item list.

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

含まれているタスクIncluded Tasks

MSBuildMSBuild には、ファイルをコピーする Copy、ディレクトリを作成する MakeDirVisual C#Visual C# ソース コード ファイルをコンパイルする Csc など、多数のタスクが装備されています。 ships with many tasks such as Copy, which copies files, MakeDir, which creates directories, and Csc, which compiles Visual C#Visual C# source code files. 使用可能なすべてのタスクと使用法については、「Task Reference (タスク リファレンス)」を参照してください。For a complete list of available tasks and usage information, see Task Reference.

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

MSBuildMSBuild は、複数の場所でタスクを検索します。 looks for tasks in several locations. 最初の検索場所は、.NET Framework ディレクトリに格納されている拡張子が .OverrideTasks であるファイル内です。The first location is in files with the extension .OverrideTasks stored in the .NET Framework directories. これらのファイル内のタスクは、プロジェクト ファイル内のタスクも含め、同じ名前を持つ他のタスクをオーバーライドします。Tasks in these files override any other tasks with the same names, including tasks in the project file. 2 番目の検索場所は、.NET Framework ディレクトリ内の拡張子が .Tasks であるファイル内です。The second location is in files with the extension .Tasks in the .NET Framework directories. タスクがこれらの場所のいずれにも見つからない場合は、プロジェクト ファイル内のタスクが使用されます。If the task is not found in either of these locations, the task in the project file is used.

関連項目See Also

MSBuild の概念 MSBuild Concepts
MSBuild MSBuild
タスクの作成 Task Writing
インライン タスクInline Tasks