side-by-side 実行のための COM アプリケーションの構成
アプリケーション構成ファイルを使うと、COM アプリケーションを特定のマネージ コンポーネントにバインドし、コンポーネントを実行するランタイムのバージョンを指定できます。 COM アプリケーションの開発者は、.NET Framework アプリケーション構成ファイルを作成し、アプリケーションと共に配布できます。
既定の読み込み動作
アンマネージ アプリケーションにアプリケーションの構成ファイルがない場合は、コンポーネントの読み込みに使用するランタイムのバージョンが次のように決定されます。
.NET Framework Version 4 以降で作成されたコンポーネントの場合は、そのコンポーネントの作成に使用したランタイムで読み込まれます。
旧バージョンの .NET Framework で作成されたコンポーネントの場合は、コンピューターにインストールされている最新バージョン (ただし、Version 4 未満) のランタイムで読み込まれます。 たとえば、コンポーネントが .NET Framework Version 1.1 で作成されている場合は、3 つのバージョンの .NET Framework (.NET Framework 1.1、.NET Framework 3.5 SP1、および .NET Framework 4) がコンピューターにインストールされており、コンポーネントは .NET Framework 3.5 SP1 で読み込まれます。 これは .NET Framework 4 より前のバージョンの既定の動作でした。
この読み込み動作は、同じプロセスで並行して (side-by-side で) 読み込まれるコンポーネントに影響を与えます。 .NET Framework 4 のランタイムは、旧バージョンの .NET Framework のランタイムと共にインプロセスで実行できます。 「インプロセスの side-by-side 実行」を参照してください。
ランタイムのバージョンの指定
既定の読み込み動作が、作成している COM アプリケーションの要件を満たさない場合は、アプリケーションが必要とするランタイムのバージョンを指定するために、アプリケーションの構成ファイルで <supportedRuntime> 要素を使用できます。 たとえば、ランタイム バージョン 1.1.4322 を指定して、.NET Framework Version 1.1 を読み込むことができます。 手順については、「.NET Framework バージョンの指定」を参照してください。
メモ |
---|
Microsoft Internet Explorer や Microsoft Office などの拡張性の高いホストによってホストされる COM アプリケーションでは、読み込むランタイムのバージョンを制御できません。 |
.NET Framework 4 および旧バージョンの .NET Framework の両方で作成されたコンポーネントがある場合は、サポートされているランタイムとして両方のバージョンをリストに指定する必要があります。これは、既定の読み込み動作では、旧バージョンのコンポーネントの読み込みに .NET Framework 4 を使用しないためです。 .NET Framework 4 を使用して旧バージョンのコンポーネントの読み込みを強制的に実行するには、構成ファイルの <startup> 要素で、useLegacyV2RuntimeActivationPolicy 属性を true に設定します。 これで、.NET Framework 4 より前のバージョンの既定の読み込み動作に戻ります。この場合、サポートされている最新バージョンの .NET Framework を使用できます。
アセンブリのバージョンの指定
アプリケーション構成ファイルがない場合、ランタイムは Windows のレジストリに登録されているアセンブリの中で、COM からアクティブにする型を含むアセンブリの最新バージョンを読み込みます。 <bindingRedirect> 要素をアプリケーションの構成ファイルで使用することで、アセンブリの以前のバージョンにバインドするようにアプリケーションに指示できます。 手順については、「アセンブリ バージョンのリダイレクト」を参照してください。
複数の <bindingRedirect> 要素を <dependentAssembly> 要素に含めることによって、複数のアセンブリ バージョンをリダイレクトできます。