アプリケーションまたはコンポーネントの複数バージョンの配置

side-by-side 実行を目的としたアセンブリは、次の方法で配置します。

  • プライベートな配置

    アセンブリは、アプリケーション ディレクトリまたはアプリケーション ディレクトリのサブディレクトリに配置できます。共通言語ランタイムは、既定のバインディング解決動作を使用して、アセンブリを検索します。アセンブリ バインディング解決の詳細については、「ランタイムがアセンブリを検索する方法」を参照してください。

    アセンブリをプライベートに配置するのは、コンピュータ上の他のアセンブリに影響を与えないため、side-by-side 実行用のアプリケーションの配置として有効な方法です。さらに、厳密な名前付きアセンブリと厳密な名前のないアセンブリの両方をプライベートに配置できます。厳密な名前付きのアセンブリはグローバル アセンブリ キャッシュに配置する必要はなく、アプリケーション ディレクトリに配置できます。アセンブリを複数のアプリケーション間で共有するつもりがない場合は、アセンブリをアプリケーション ディレクトリにプライベートに配置してください。

    プライベートな配置の他の利点として、アプリケーションの配置に XCOPY が使用できます。

  • グローバル アセンブリ キャッシュへの配置

    アセンブリをグローバル アセンブリ キャッシュに配置すると、コンピュータ上のすべてのアプリケーションからそのアセンブリが見えるようになります。この配置方法は、複数のアプリケーション間でアセンブリを共有するときに適しています。グローバル アセンブリ キャッシュには、厳密な名前付きアセンブリだけを配置できます。

    Windows インストーラとグローバル アセンブリ キャッシュ ツール (Gacutil.exe) のどちらでもアセンブリをグローバル アセンブリ キャッシュに配置できます。アセンブリの開発とテストにはグローバル アセンブリ キャッシュ ツールを使用し、実際にアプリケーションを配置するときは Windows インストーラを使用する必要があります。Windows インストーラは、グローバル アセンブリ キャッシュにインストールされているアセンブリへの参照を追跡するので、コンピュータ上のアプリケーションがアセンブリを必要とする間は、これらの共有アセンブリはアンインストールされません。side-by-side 実行アプリケーションのインストールの詳細については、「Windows インストーラを使用した side-by-side 実行用のアプリケーションおよびコンポーネントのインストール」を参照してください。

  • <codeBase> 要素を使用した配置

    <codeBase> 要素をアプリケーション構成ファイルに含めて、ランタイムがアセンブリを検索するのを補助することができます。ランタイムは、アセンブリを検索するために導入した既定の規則を使用せずに、<codeBase> 要素で指定された場所を使用します。<codeBase> 要素は、厳密な名前付きアセンブリと厳密な名前のないアセンブリの両方に使用できます。

    厳密な名前のないアセンブリに対しては、<codeBase> 要素をアプリケーション ディレクトリからの相対パスで指定することが必要です。この要件によって、ランタイムが同じ名前を持つ 2 つのアセンブリを識別でき、side-by-side 実行で名前の競合が発生しません。

    厳密な名前付きアセンブリに対しては、<codeBase> 要素によってランタイムにどのような場所でも指定できます。<codeBase> 要素によって、グローバル アセンブリ キャッシュを使用しなくても、アプリケーション間で厳密な名前付きアセンブリを共有できる機構がもたらされます。ただし、この配置方法を使用するときは注意が必要です。バージョンを変更するときに誤った <codeBase> 要素を入力すると、アプリケーションが容易に壊れてしまうからです。

配置の詳細については、「アプリケーションの配置」を参照してください。

参照

概念

Windows インストーラを使用した side-by-side 実行用のアプリケーションおよびコンポーネントのインストール
side-by-side 実行用のアプリケーションおよびコンポーネントを作成するときのガイドライン

その他の技術情報

.NET Framework アプリケーションの配置
複数バージョンのアプリケーションまたはコンポーネントの作成