厳密な名前のないアセンブリにはさまざまなバージョンがあり、app.exe.config でそれらへのバインディング リダイレクト/プローブ パスはありません。たとえば、MyDll (1.0.0.0_null_neutral) と MyDll (2.0.0.0_null_neutral) です。app.exe に対して、これらのアセンブリは LAC\MyDll_1.0.0.0_null_neutral および LAC\MyDll_2.0.0.0_null_neutral に保存されます。
私の理解では、MyDll アセンブリは厳密な名前が付いていないため、.NET ランタイムは MyDll の異なるバージョンを区別しません。したがって、MyDll 1.0.0.0 が既にメモリにロードされていて、MyDll 2.0.0.0 に対してビルドされたコードが実行された場合、.NET ランタイムは MyDll 2.0.0.0 をロードしません。
しかし、VS2008 でプロセスにアタッチしてモジュール ウィンドウを表示すると、MyDll 1.0.0.0 と MyDll 2.0.0.0 の両方が LAC フォルダーから読み込まれていることに気付きました。
私の理解にはどこかギャップがあるようです。誰かがそれを指摘できますか?
編集: これまでの応答に感謝します。はい、私はそのビットをスキップしました。実行可能ファイルは AssemblyResolve イベントをリッスンし、LAC を調べて処理します。
アセンブリに厳密な名前が付いていない限り、そのバージョンは無視されるというMSDNのドキュメントを見たことがあります。掘り出せるか見てみます。