手順 1: 構成ファイルのチェック

アセンブリ バインディング動作は、次の 3 つの XML ファイルに基づいて、さまざまなレベルで設定できます。

  • アプリケーション構成ファイル

  • 発行者ポリシー ファイル

  • マシン構成ファイル

これらのファイルには、特定のアセンブリについて、バインディング リダイレクト、コードの場所、バインディング モードなどの情報が同じ構文で記述されています。各構成ファイルに、バインディング プロセスをリダイレクトする <assemblyIdentity> 要素を含めることができます。<assemblyIdentity> の子要素には、<assemblyBinding> とその子要素 (<dependentAssembly><bindingRedirect>、および <codeBase> 要素など) が含まれます。

注意

構成情報は、この 3 つの構成ファイル内に含まれていますが、すべての要素がすべての構成ファイルで有効なわけではありません。たとえば、バインディング モードやプライベート パス情報は、アプリケーション構成ファイルだけに含めることができます。各ファイルに含まれる情報の完全な一覧については、「アプリケーションの設定」を参照してください。

アプリケーション構成ファイル

最初に、共通言語ランタイムは、アプリケーション構成ファイル内に呼び出し元アセンブリのマニフェストに格納されているバージョン情報をオーバーライドする情報がないかどうかをチェックします。アプリケーション構成ファイルはアプリケーションと共に配置できますが、アプリケーションの実行にとっては必須ではありません。通常、このファイルはほとんど瞬時に取得できますが、Internet Explorer Web ベースのシナリオの場合のように、アプリケーション ベースがリモート コンピュータに存在するときは、構成ファイルをダウンロードする必要があります。

クライアント実行可能ファイルの場合、アプリケーション構成ファイルは、アプリケーションの実行可能ファイルと同じディレクトリに配置され、実行可能ファイルと同じ名前に拡張子 .config を付けた基本名が割り当てられます。たとえば、C:\Program Files\Myapp\Myapp.exe の構成ファイルは、C:\Program Files\Myapp\Myapp.exe.config です。ブラウザ ベースのシナリオでは、HTML ファイルの <link> 要素を使用して構成ファイルを明示的にポイントする必要があります。

発行者ポリシー ファイル

次に、ランタイムは、発行者ポリシー ファイルが存在する場合、このファイルをチェックします。発行者ポリシー ファイルは、コンポーネントの発行者が共有コンポーネントへの修正または更新 (QFE または Service Pack) として配布します。発行者ポリシー ファイルには、アセンブリ参照を新しいバージョンに伝える共有コンポーネントの発行者によって発行された互換情報が含まれています。アプリケーション構成ファイルやマシン構成ファイルとは異なり、発行者ポリシー ファイルは、グローバル アセンブリ キャッシュにインストールする必要のあるその発行者ポリシー ファイルに固有のアセンブリに含める必要があります。

注意

発行者ポリシーは、同じ共有コンポーネントを使用するすべてのアプリケーションに適用されます。

発行者ポリシー構成ファイルは、アプリケーションからのバージョン情報 (つまり、アセンブリ マニフェストまたはアプリケーション構成ファイルからのバージョン情報) をオーバーライドします。アプリケーション構成ファイルに、アセンブリ マニフェストに指定されているバージョンをリダイレクトするように指示するステートメントがない場合、発行者ポリシー ファイルは、アセンブリ マニフェストに指定されているバージョンをオーバーライドします。しかし、アプリケーション構成ファイルにリダイレクト ステートメントがある場合、発行者ポリシーは、マニフェストに指定されているバージョンではなく、アプリケーション構成ファイル内のバージョン情報をオーバーライドします。

発行者ポリシー ファイルを使用するのは、共有コンポーネントが更新され、そのコンポーネントを使用するすべてのアプリケーションが共有コンポーネントの新しいバージョンを選択する必要がある場合です。アプリケーション構成ファイルにセーフ モードが適用されていない限り、アプリケーション構成ファイル内の設定は、発行者ポリシー ファイル内の設定によってオーバーライドされます。

セーフ モード

通常、発行者ポリシー ファイルは、Service Pack またはプログラム更新の一部として明示的にインストールされます。アップグレードされた共有コンポーネントに何か問題がある場合は、セーフ モードを使用して発行者ポリシー ファイル内のオーバーライドを無視できます。セーフ モードは、<publisherPolicy apply="yes|no"/> 要素によって決定されます。この要素は、アプリケーション構成ファイル内だけに含まれています。この要素は、発行者ポリシーの構成情報をバインディング プロセスから削除するかどうかを指定します。

セーフ モードは、アプリケーション全体に対して設定するか、または選択したアセンブリに対して設定できます。つまり、アプリケーションを構成するすべてのアセンブリのポリシーをオフに設定するか、または一部のアセンブリについてだけポリシーをオフにし、それ以外はオフにしないように設定できます。アプリケーションを構成するアセンブリのうち選択したアセンブリに発行者ポリシーを適用するには、<publisherPolicy apply=no/> を設定し、<dependentAssembly> 要素を使用して、どちらのアセンブリが必要かどうかを指定します。アプリケーションを構成するすべてのアセンブリに発行者ポリシーを適用するには、<publisherPolicy apply=no/> を設定し、依存アセンブリ要素は設定しません。構成の詳細については、「アプリケーション構成ファイル」を参照してください。

マシン構成ファイル

3 番目に、ランタイムはマシン構成ファイルをチェックします。このファイルは、Machine.config という名前で、ローカル コンピュータの、ランタイムがインストールされているルート ディレクトリの Config サブディレクトリにあります。管理者は、このマシン構成ファイルを使用して、そのコンピュータに固有のアセンブリ バインディング制限を指定できます。マシン構成ファイル内の設定は、ほかのすべての構成設定に優先します。ただし、これは、すべての構成設定をこのマシン構成ファイルに配置する必要があるという意味ではありません。管理者ポリシーファイルによって決定されるバージョンは最終的であり、オーバーライドすることはできません。Machine.config ファイル内に指定されたオーバーライドは、すべてのアプリケーションに作用します。構成ファイルの詳細については、「構成ファイル」を参照してください。

参照

概念

ランタイムがアセンブリを検索する方法
.NET Framework アプリケーションの配置シナリオ
手順 2: 前に参照したアセンブリの検索
手順 3: グローバル アセンブリ キャッシュのチェック
手順 4 : コードベースまたはプローブによるアセンブリの検索
部分アセンブリ参照