COM アプリケーションからのランタイム初期化
COM アプリケーションでマネージ型をアクティブにするには、共通言語ランタイムをメモリに読み込む必要があります。 COM 相互運用機能は実際にはランタイムを読み込みませんが (ランタイム スタートアップ コードが読み込みます)、COM アプリケーションは特定のバージョンのランタイムを対象にすることができます。
ランタイムのバージョンは次の要因によって決まります。
COM アプリケーションでは、アプリケーション構成ファイルでランタイムのバージョンを指定できます。 詳細については、「side-by-side 実行のための COM アプリケーションの構成」を参照してください。
Microsoft Internet Explorer や Microsoft Office などの拡張性の高いホストによって、ランタイムが既にメモリに読み込まれている場合があります。 プラグイン COM アプリケーションは、マネージ コンポーネントを実行するホスト用に読み込まれているランタイムを使用します。
厳密な制御が必要である場合は、COM アプリケーションで、mscoree.dll からエクスポートされる ICLRMetaHostPolicy::GetRequestedRuntime メソッドを呼び出すことによって、プログラムで特定のバージョンのランタイムをあらかじめ読み込むことができます。 または、mscoree.dll からエクスポートされる GetRequestedRuntimeVersionForCLSID 関数を呼び出し、戻り値を CorBindToRuntimeHost 関数に渡すことによって、アクティブである COM クラスに基づいて、アプリケーションで異なるバージョンのランタイムを対象にすることができます。
これらの要因がない場合は、既定の読み込み動作に応じて、スタートアップ コードによってランタイムが読み込まれます。既定の読み込み動作については、「side-by-side 実行のための COM アプリケーションの構成」を参照してください。
型解決
アクティブ化される型を含むアセンブリの複数のバージョンが Windows のレジストリ内に存在する場合、既定ではランタイムによって最新バージョンが読み込まれます。
COM アプリケーションにアプリケーション構成ファイルが存在する場合は、バインディングを特定のバージョンのアセンブリ内の型にリダイレクトできます。 詳細については、「side-by-side 実行のための COM アプリケーションの構成」を参照してください。
![]() |
---|
.NET Framework Version 1.0 と共にインストールされるコンポーネントには、バージョン依存レジストリ キーがありません。このようなコンポーネントでは、COM がコンピューター上で利用できる型のバージョンは 1 つだけです。 |
参照
概念
side-by-side 実行のための COM アプリケーションの構成