我遇到了一個與程序集加載不同的問題。假設我們有Foo.dll,它引用了強名稱簽名的FooInfra.dll版本1.0.0.0。強名稱的錯誤版本Dll加載成功
我們使用外部可執行文件來加載Foo.dll並在其中調用MyMethod()。由於某種原因,在特定模式下運行exe時,我們稱之爲模式A,即使FooInfra.dll 2.0.0.0版被意外部署,MyMethod()也能成功運行。如果在「模式B」中運行它,我們會得到預期的錯誤,即找不到正確的組件。
我的問題:這怎麼可能?我認爲用強有力的命名組件,必須使用正確的版本。我已經附上了windbg,以確保它不是從模式A的不同位置加載FooInfra.dll,它不是 - 它確實加載了2.0.0.0版本。
是否有可能在模式A中,外部可執行文件顯式加載DLL,繞過MyMethod運行時強名稱檢查,因爲程序集僅加載?
任何關於這個問題或如何調試/診斷的見解將不勝感激。謝謝!
對於自.NET 3.5 SP1開始以完全信任方式運行的應用程序,會跳過強名稱驗證。 –