次の方法で共有


アセンブリ バインディングのリダイレクトの構成

この記事は .NET Framework に固有のものです。 .NET 6 以降のバージョンを含む、.NET の新しい実装には適用されません。

既定では、アプリケーションは、アプリケーションのコンパイルに使用されるランタイム バージョンに付属している一連の .NET Framework アセンブリを使用します。 アプリケーション構成ファイルの 要素で < 属性を使用すると、アセンブリ バインド参照を特定のバージョンの .NET Framework アセンブリにリダイレクトできます。 この省略可能な属性は、.NET Framework のバージョン番号を使用して、適用されるバージョンを示します。 appliesTo 属性が指定されていない場合、<assemblyBinding> 要素はすべてのバージョンの .NET Framework に適用されます。

appliesTo 属性は.NET Framework バージョン 1.1 で導入されました。.NET Framework バージョン 1.0 では無視されます。 つまり、< 属性が指定されている場合であっても、.NET Framework バージョン 1.0 を使用する場合には、すべての >assemblyBinding 要素が適用されます。

appliesTo 属性を使用して、アセンブリ バインドリダイレクトを特定のバージョンのランタイムに制限します。

たとえば、.NET Framework バージョン 1.0 アセンブリのアセンブリ バインドをリダイレクトするには、アプリケーション構成ファイルに次の XML コードを含めます。

<runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" appliesTo="v1.0.3705">
            <dependentAssembly>
               * assembly information goes here *
            </dependentAssembly>
       </assemblyBinding>
</runtime>

<assemblyBinding> 要素は順序に依存します。 まず、.NET Framework バージョン 1.0 アセンブリのアセンブリ バインド リダイレクト情報を入力し、次に.NET Framework バージョン 1.1 アセンブリのアセンブリ バインド リダイレクト情報を入力する必要があります。 最後に、 appliesTo 属性を使用せず、すべてのバージョンの .NET Framework に適用される .NET Framework アセンブリ リダイレクトのアセンブリ バインド リダイレクト情報を入力します。 リダイレクトで競合が発生した場合は、構成ファイル内の最初の一致するリダイレクト ステートメントが使用されます。

たとえば、1 つの参照を .NET Framework バージョン 1.0 アセンブリにリダイレクトし、別の参照を .NET Framework バージョン 1.1 アセンブリにリダイレクトするには、次の擬似コードに示すパターンを使用します。

<assemblyBinding xmlns="..." appliesTo="v1.0.3705">
  <!-- .NET Framework version 1.0 redirects here. -->
</assemblyBinding>

<assemblyBinding xmlns="..." appliesTo="v1.1.4322">
  <!-- .NET Framework version 1.1 redirects here. -->
</assemblyBinding>

<assemblyBinding xmlns="...">
  <!-- Redirects meant for all versions of the .NET Framework. -->
</assemblyBinding>

構成ファイルエラーのデバッグ

ランタイムは、アプリケーション ドメインの作成時に構成ファイルを 1 回解析し、そのアプリケーション ドメインにコードを読み込みます。 共通言語ランタイムは、エントリを無視して構成ファイル内のエラーを処理します。 形式が正しくない XML が含まれている場合、ランタイムは構成ファイル全体を無視します。 無効な XML の場合、無効なセクションのみが無視されます。

アセンブリ バインド リダイレクトが発生しているかどうかを判断することで、構成ファイルが使用されているかどうかを判断できます。 アセンブリ バインド ログ ビューアー (Fuslogvw.exe) を使用して、読み込まれているアセンブリを確認します。 すべてのアセンブリ バインドを表示するには、レジストリで ForceLog のエントリを設定する必要があります。

こちらも参照ください