1

.NET DLL を参照する C# アプリケーションがあります。
この DLL がアプリケーションのbinディレクトリと GAC の両方に存在する場合、実行時に CLR によってどちらが取得されるでしょうか? GAC に最新バージョンがある場合、に存在するバージョンの代わりにそのバージョンが使用されbinますか?

binまた、CLR が常にGAC の代わりに自分のものを使用するように強制するにはどうすればよいですか?

MSDNによると

CLR は、グローバル アセンブリ キャッシュ、構成ファイルで指定されたコードベースをチェックしてから、アプリケーションのディレクトリとサブディレクトリをチェックします。

では、最初に GAC を調べるということですか?
ありがとう。

4

1 に答える 1

1

GAC にアセンブリを持たないことで、CLR がGAC でアセンブリのコピーを使用しないように強制します。プロジェクトで参照する前に、DLL の名前を変更するか、[AssemblyVersion] を変更するだけで簡単に実行できます。これをスキップすると、DLL Hell としても知られる厄介な実行時例外が呼び出されます。

于 2012-07-21T15:46:48.383 に答える