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 アセンブリ」を参照してください。 アプリケーション開発者は、独自のサイド バイ サイド アセンブリを作成することもできます。 詳細については、「 Side-by-side アセンブリを作成するためのガイドライン」を参照してください。 多くの場合、アプリケーション コードを変更しなくても、サイド バイ サイド アセンブリを使用するように既存のアプリケーションを更新できます。

開発者は、次の理由により、サイド バイ サイド アセンブリを使用して 分離されたアプリケーションを作成し、既存のアプリケーションを分離されたアプリケーションに更新することをお勧めします。

  • サイド バイ サイド アセンブリを使用すると、DLL バージョンの競合の可能性が軽減されます。
  • サイド バイ サイド アセンブリ共有を使用すると、複数のバージョンの COM または Windows アセンブリを同時に実行できます。
  • アプリケーションと管理者は、展開後に グローバル 構成または アプリケーションごとの構成 ベースでアセンブリ構成を更新できます。 たとえば、アプリケーションを再インストールすることなく、更新プログラムを含むサイド バイ サイド アセンブリを使用するようにアプリケーションを更新できます。