2009-10-22 16 views

答えて

20

両方のアセンブリの名前が強い(署名済み)場合、CLRは常にGACからロードされます。

  1. は、 出版社 アプリケーション構成ファイルを含め、該当する コンフィギュレーション・ファイルを調べて、正しいアセンブリバージョンを決定します。ここでは

    は、ランタイムが(How the Runtime Locates Assembliesから)アセンブリ参照を解決するために使用する手順は次のとおりですポリシーファイル、およびマシン 構成ファイル。 設定ファイルが リモートマシンにある場合は、実行時に アプリケーションファイルを見つけてダウンロードしてから、 設定ファイルを最初にダウンロードする必要があります。

  2. アセンブリ名が以前にバインドされているかどうかをチェックし、その場合は が以前にロードされたアセンブリを使用するかどうかを確認します。 アセンブリをロードする前の要求が失敗した場合は、アセンブリを にロードせずにすぐに要求が失敗します。

  3. グローバルアセンブリキャッシュをチェックします。そこにアセンブリがある場合、 ランタイムはこのアセンブリを使用します。

  4. アセンブリのためのプローブ(...省略いくつかの材料...)

その同じ記事の後半で述べたように:

アセンブリのチェックバージョンはありませんランタイムは実行されません。 グローバルアセンブリキャッシュに、厳密な名前のないアセンブリがないかチェックインしないでください。

ローカルアセンブリから署名を削除する余裕がある場合、アプリケーションはGACの署名ではなく署名を削除します。

実行時バインドのメカニズムについて詳しくは、Suzanne Cook's blogを参照してください。

This blog entry from Scott Hanselmanもまた、結合プロセスの大きな概要を提供する。

-1

.NET Frameworkアプリケーションを正常に展開するには、共通言語ランタイムがアプリケーションを構成するアセンブリにどのように配置され、バインドされるかを理解する必要があります。デフォルトでは、ランタイムは、アプリケーションがビルドされたアセンブリの正確なバージョンとバインドしようとします。この既定の動作は、構成ファイルの設定によって上書きできます。

Windowsソフトウェア開発キット(SDK)に含まれているアセンブリバインディングログビューア(Fuslogvw.exe)を使用して、ログファイルにバインド情報を表示できます。

1

ローカルのDLLのバージョン番号を変更することができれば、あなたはoldVersion属性を使用してDLLのバージョンのリダイレクトを使用することができます。ローカルアセンブリの厳密な名前を使用することができます。 このページを見てください: http://msdn.microsoft.com/en-us/library/7wd6ex19.aspx

また、あなたはそれがここで説明されるように、コンパイル済みのアセンブリのバージョン番号を変更することが可能であることを考慮する必要があります。 Change Assembly Version in a compiled .NET assembly

関連する問題