side-by-side アセンブリについて
Windowsサイド バイ サイド アセンブリはマニフェストによって記述されます。 サイド バイ サイド アセンブリには、DLL のグループ、Windows クラス、COM サーバー、タイプ ライブラリ、またはインターフェイスなど、常にアプリケーションに一緒に提供されるリソースのコレクションが含まれています。 これらはアセンブリ マニフェストで説明されています。
通常、サイド バイ サイド アセンブリは 1 つの DLL です。 たとえば、Microsoft COMCTL32 アセンブリはマニフェストを持つ 1 つの DLL ですが、Microsoft Visual C++開発システムランタイム ライブラリ アセンブリには複数のファイルが含まれています。 マニフェストには、サイド バイ サイド アセンブリとサイド バイ サイド アセンブリの依存関係を記述する メタデータ が含まれています。
サイド バイ サイド アセンブリは、名前付け、バインド、バージョン管理、展開、構成の基本的な単位としてオペレーティング システムによって使用されます。 すべてのサイド バイ サイド アセンブリには、一意の ID があります。 アセンブリ ID の属性の 1 つは、そのバージョンです。 詳細については、「 アセンブリバージョン」を参照してください。
Windows XP 以降では、同時に実行されているアプリケーションで複数のバージョンのサイド バイ サイド アセンブリを使用できます。 マニフェストとアセンブリ バージョン番号は、アセンブリ バージョンのアプリケーションへの適切なバインドを決定するためにローダーによって使用されます。 次の図に示すように、サイド バイ サイド アセンブリとマニフェストは、アプリケーションとサイド バイ サイド マネージャーと連携します。

前の例では、バージョン 6.0 Comctl32.DLLとバージョン 5.0 Comctl32.DLLの両方がサイド バイ サイド アセンブリ キャッシュにあり、アプリケーションで使用できます。 アプリケーションが DLL の読み込みを呼び出すとき、サイド バイ サイド マネージャーは、アプリケーションがマニフェストで説明されているバージョン依存を持っているかどうかを判断します。 関連するマニフェストがない場合は、アセンブリの既定のバージョンが読み込まれます。 Windows XP の場合、バージョン 5.0 のComctl32.DLLがシステムの既定値です。 サイド バイ サイド マネージャーがマニフェストに記載されているバージョン 6.0 への依存を検出した場合、そのバージョンはアプリケーションで実行するために読み込まれます。
いくつかの主要なシステム アセンブリが、サイド バイ サイド アセンブリとして Microsoft から利用できるようになります。 詳細については、「 サポートされている Microsoft Side-by-side アセンブリ」を参照してください。 アプリケーション開発者は、独自のサイド バイ サイド アセンブリを作成することもできます。 詳細については、「 サイド バイ サイド アセンブリの作成に関するガイドライン」を参照してください。 多くの場合、アプリケーション コードを変更しなくても、サイド バイ サイド アセンブリを使用するように既存のアプリケーションを更新できます。
開発者は、サイド バイ サイド アセンブリを使用して 分離されたアプリケーションを作成し、次の理由で既存のアプリケーションを分離されたアプリケーションに更新することをお勧めします。
- サイド バイ サイド アセンブリにより、DLL バージョンの競合の可能性が軽減されます。
- サイド バイ サイド アセンブリ共有を使用すると、複数のバージョンの COM または Windows アセンブリを同時に実行できます。
- アプリケーションと管理者は、展開後に グローバル または アプリケーションごとの構成 ベースでアセンブリ構成を更新できます。 たとえば、アプリケーションを再インストールしなくても、更新プログラムを含むサイド バイ サイド アセンブリを使用するようにアプリケーションを更新できます。