ビジュアル デザイナーに型を公開する
ビジュアル デザイナーを表示するために、Visual Studio では、デザイン時にクラスと型の定義にアクセスできる必要があります。 クラスは、現在のプロジェクトの完全な依存関係セット (参照に加えてその依存関係) を含む、事前定義されたアセンブリのセットから読み込まれます。 カスタム ツールによって生成されたファイルで定義されているクラスと型にビジュアル デザイナーがアクセスすることが必要な場合もあります。
Visual Basic および Visual C# プロジェクト システムは、一時的なポータブル実行可能ファイル (一時的 PE) を通じて、生成されたクラスと型にアクセスするためのサポートを提供しています。 カスタム ツールによって生成されたファイルなら何でも一時的なアセンブリにコンパイルできるため、それらのアセンブリから型を読み込んでデザイナーに公開できます。 各カスタム ツールの出力は個別の一時的 PE にコンパイルされ、この一時的なコンパイルの成否は、生成されたファイルのコンパイル可否のみによって決まります。 プロジェクトが全体としてビルドされない場合でも、デザイナーは個々の一時的 PE を利用できる場合があります。
プロジェクト システムは、カスタム ツールの出力ファイルへの変更を追跡するための完全なサポートを提供しますが、これらの変更がカスタム ツールの実行の結果であることが条件です。 カスタム ツールが実行されるたびに、新しい一時的 PE が生成され、適切な通知がデザイナーに送信されます。
Note
一時的なプログラム実行可能ファイルの生成ファイルはバックグラウンドで行われるため、コンパイルが失敗した場合でも、ユーザーにエラーは報告されません。
一時的 PE のサポートを利用するカスタム ツールでは、次の規則に従う必要があります。
レジストリで GeneratesDesignTimeSource を 1 に設定する必要があります。
この設定がないと、プログラムの実行可能ファイルのコンパイルは行われません。
生成されるコードは、グローバル プロジェクト設定と同じ言語である必要があります。
レジストリで GeneratesDesignTimeSource が 1 に設定されている場合、DefaultExtension で要求された拡張機能としてカスタム ツールが報告する内容にかかわらず、一時的 PE はコンパイルされます。 拡張子は .vb、.cs、または .jsl である必要はありません。任意の拡張子にすることができます。
カスタム ツールによって生成されるコードは有効である必要があり、Generate が実行を終了した時点でプロジェクトに存在する参照のセットのみを使用して独力でコンパイル可能である必要があります。
一時的 PE がコンパイルされるとき、コンパイラに提供される唯一のソース ファイルはカスタム ツールの出力です。 そのため、一時的 PE を使用するカスタム ツールでは、プロジェクト内の他のファイルに依存せずにコンパイル可能な出力ファイルを生成する必要があります。