BuildManager オブジェクトの概要
BuildManager オブジェクトは、サードパーティの開発者がポータブル実行可能 (PE: Portable Executable) ファイルを管理するために使用します。PE ファイルは、カスタム ツールによってコンパイルされます。カスタム ツールは、プロジェクト システムに対し、その出力が一時的な PE ファイルにコンパイルされたことを示します。
BuildManager オブジェクトおよびカスタム ツールは、ビジュアル デザイナーの開発に使用されます。Visual Studio のデザイナーには、ファイル用のグラフィカル ユーザー インターフェイスが用意されています。ユーザー インターフェイスを作成するには、プロジェクト項目ファイルに記述された型をデザイナーでインスタンス化できるようにすることが必要になる場合があります。カスタム ツールからの一時的な PE ファイルは、カスタム ツールの出力であるプロジェクト項目に記述された型をカプセル化するアセンブリ ファイルです。したがって、多くの場合は、デザイナーとカスタム ツールが連携してデザイン時のユーザー インターフェイスを生成します。これに適した例は、XSD ファイルからクラスを生成するカスタム ツールです。UI でデータ バインディングなどの機能をデザイン時にサポートできるようにするために、データセットから何が提供されるのかを調査する場合には、ビジュアル デザイナーで、生成されたクラスのインスタンス化が必要になることがあります。
カスタム ツール
カスタム ツールでは、プロジェクト項目ファイルの内容を入力として解釈し、後でコンパイル可能または不可能な新しいプロジェクト項目ファイルを生成します。一般的なイベントのシーケンスを次に示します。
ユーザーまたはデザイナーは、プロジェクト項目の CustomTool プロパティを設定します。
プロジェクト項目の内容を入力としてカスタム ツールが実行されます。カスタム ツールが入力を認識できない場合は、カスタム ツールによりユーザーにエラーが報告されます。詳細については、「RunCustomTool」を参照してください。
カスタム ツールの出力は、プロジェクト参照と共に、ポータブル実行可能ファイル (一時的な PE ファイル) にコンパイルされます。
[!メモ]
出力が一時的な PE ファイルにコンパイルされるのは、カスタム ツールが GeneratesDesignTimeOutput レジストリ値を 1 に設定して登録されている場合だけです。
BuildManager オブジェクトの BuildDesignTimeOutput メソッドを呼び出すことにより、PE ファイルの説明を参照できます。
BuildDesignTimeOutput によって返される一時的な PE ファイルの出力は、次のとおりです。
<root> <Application private_binpath="full output path to temporary PE, excluding the name"/> <Assembly codebase = "filename of the temporary PE, e.g., sample.dll"" name = "name of the temporary PE == filename without the extension, e.g., "sample"" version = "always "0.0.0.0"" snapshot_id = "unique ID number" replaceable = "currently unused; always set to "True"" /> </root>
BuildManager オブジェクト
BuildManager オブジェクトは、一時的な PE ファイルにアクセスできます。DesignTimeOutputMonikers プロパティは、プロジェクト内のすべての PE モニカー (名前) の配列です。プロジェクト システムは、プロジェクトの階層構造に基づいて PE モニカーを割り当てます。たとえば、Project1 の Folder1 にある SomeData.xsd という XML デザイナー ファイルが SomeData.cs を出力した場合、モニカーは Project1\Folder1\SomeData.cs になります。BuildDesignTimeOutput メソッドは、モニカーをパラメーターとして取得し、PE ファイルの説明を XML 文字列で返します。
BuildManagerEventsClass オブジェクトの DesignTimeOutputDeleted イベントは、PE ファイルを生成したプロジェクト項目ファイルがプロジェクトから削除されたときに発生します。DesignTimeOutputDirty イベントは、一時的な PE ファイルを生成するカスタム ツール (単一ファイル ジェネレーター) が実行されるたびに発生します。プロジェクト内のすべての単一ファイル ジェネレーターは次の場合に実行されます。
アップグレード直後にプロジェクトが開かれた場合。
ルート名前空間が変更された場合。
個別の単一ファイル ジェネレーターは次の場合に実行されます。
単一ファイル ジェネレーターを持つドキュメント (たとえば、データセット) が保存された場合。
単一ファイル ジェネレーターを持つドキュメントが開かれて変更された状態で、ユーザーが Visual Studio 内の別のドキュメントに切り替えた場合。
プロジェクト内の単一ファイル ジェネレーターを持つファイルに対し、名前の変更や移動が行われた場合。
ユーザーが単一ファイル ジェネレーターの出力ファイル内で使用される型のシンボルの名前変更を行った場合。たとえば、ユーザーが型 'Type' および dataset1.vb (データセットの出力) で使用されているその型 ID に対してシンボルの名前変更を行った場合、名前変更操作の完了後に単一ファイル ジェネレーターが起動します。
BuildManager オブジェクトを使用したプログラミング方法については、次の表のリンクをクリックしてください。
目的 |
参照項目 |
---|---|
一時的な PE ファイルのモニカーを表示します。また、BuildManagerEvents を監視します。 |
サードパーティ販売元
BuildManager オブジェクトの機能の多くには、ITypeResolutionService インターフェイスを使用してアクセスすることもできます。ただし、包括的なデザイナーを作成するサードパーティ販売元は、DesignTimeOutputMonikers プロパティおよび BuildDesignTimeOutput メソッドを使用する必要があります。詳細については、「Visual Studio オートメーションの範囲」を参照してください。