怪異的行爲組件的負荷時,混合使用Assembly.LoadFrom和Assembly.Load怪異的行爲混合使用Assembly.LoadFrom和Assembly.Load
組件的裝載時Assembly.LoadFrom加載程序集時我曾經遇到過一個怪異的行爲並在隨後的Assembly.Load上進行。
我使用Assembly.LoadFrom加載程序集,其中程序集位於不是執行文件夾的文件夾中。
後來在我的測試代碼中,當我嘗試再次使用Assembly.Load加載此程序集時,加載失敗,出現System.IO.FileNotFoundException(「無法加載文件或程序集...」),儘管程序集已經加載。加載失敗時使用強名稱和非強名稱(再次加載該程序集的原因是BinaryFormatter的用法)。
但是,如果程序集位於執行文件夾中,則兩種情況下的後期加載都會成功,並使用強名稱和非強名稱。在這種情況下,您可以看到兩個相同的組件從兩個不同的位置加載。
,再現此問題的一個簡單的碼樣本 -
大會assembly1 = Assembly.LoadFrom(@ 「C:\ A.DLL」);
//加載具有強名稱失敗 大會assembly2 = Assembly.Load(@ 「一個,版本= 1.0.0.0, 文化=中性公鑰= 14986c3f172d1c2c」);
//同時載入一個不強的失敗 Assembly assembly3 = Assembly.Load(@「a」);
- CLR忽略已加載程序集的任何說明?
- 任何想法我該如何緩解這個問題?
感謝。