我有一個依賴於庫的可執行文件。我還有一個「加載器」應用程序,它將可執行文件加載到單獨的AppDomain(我的「沙箱」)中並在那裏運行它。該庫需要從沙箱外進行初始化,所以我需要在加載可執行文件之前加載庫。這按預期工作,但是當我現在加載可執行文件時,該庫會再次加載,並且可執行文件使用未初始化的副本。.net自動程序集解析加載重複程序集
Assembly.Load(File.ReadAllBytes(assemblyFile.FullName));
,而不是這樣的::
Assembly.LoadFrom(assemblyFile.FullName);
但是,使用LoadFrom鎖定該文件
這隻有當我加載像這樣的庫中出現。我需要能夠刪除/寫入文件,因爲我的應用程序需要能夠重新加載整個沙箱及其中的所有程序集。
我也試過註冊AppDomain.AssemblyResolve,但如果它沒有找到該文件,這不正是我想要的它只是叫...
示例日誌輸出:
- 加載庫X < - 手工負載
- 初始化庫X
- 加載可執行ý
- 加載庫X < - 不好,我想用加載的X!
所以我的問題是:我如何強制.net使用已加載的程序集,而不是加載重複?
是在同一個AppDomain中出現的兩個負載? –
@DanField是的,我仔細檢查了這 – Whosdatdev