共通言語ランタイムが特定のバージョンの厳密な名前付きアセンブリにバインドするように要求される場合、共通言語ランタイムがバインドする先のバージョンを最終的に決定する前に、アセンブリ参照のバージョンをいくつかのポリシー解決段階で変更できます。このポリシー解決プロセスでは、コンパイル時に指定されているアセンブリ参照を、アプリケーションが配置された後でも、関係するアセンブリを再コンパイルせずに変更できます。ポリシー解決は、次の 3 つの段階で発生します。
- アプリケーション ポリシー解決
- 発行者ポリシー解決
- 管理者ポリシー解決
各段階ごとに、ポリシーを記述している XML 構成ファイルが読み取られます。アプリケーション構成ファイル内の <privatePath> タグ (「(3) プライベート コンポーネントのパス」で説明) は、最も単純なアプリケーション ポリシー解決を示しています。また、<BindingRedirect> タグを使用して、アセンブリ参照を別のバージョンの厳密な名前付きアセンブリにリダイレクトすることもできます。プライベート アセンブリのバージョン番号はチェックされません。
発行者ポリシー解決によって、共有コンポーネントの販売元は、独自のソフトウェアの複数のバージョン間で互換性のあるステートメントを作成できます。これらのアセンブリごとの構成ファイルは、厳密な名前付きのアセンブリとして配布され、サービス パック形式の更新としてグローバル アセンブリ キャッシュ (GAC) にインストールされます。発行者ポリシー ファイルによって指定されたバインディング リダイレクトが参照に適用され、さらに、その参照には管理者ポリシー解決が適用されます。発行者ポリシー アセンブリはシステム上のすべてのアプリケーションに影響するため、これらのアセンブリはアプリケーションとは別にインストールしておく必要があります。
管理者ポリシー解決は最終段階であり、バインディング ポリシー解決プロセスの中でも最も効力があります。管理者ポリシー ファイルは、<WindowsDirectory>\Microsoft.NET\Framework\v1.0.FinalBuildNumber\CONFIG ディレクトリにあり、ファイル名は Machine.config です。このファイルには、前の 2 つのポリシー解決の段階で使用したポリシー ファイルと同じ XML ベースのスキーマが含まれています。管理者ポリシーは、システム上で発生するすべてのアセンブリ バインディングに影響し、このポリシーを無視することはできません。
参照
バージョンが管理されたコンポーネントの配置 | パッケージ化と配置の要約 | 付録 A: パッケージ化および配置の追加情報 | 付録 B: パッケージ化および配置用のツール