簡體   English   中英

具有不同程序集引用的Assembly.CreateInstance

[英]Assembly.CreateInstance with different assembly references

我創建了一個插件架構,該架構支持插件的重新加載並且不使用多個AppDomain。 我只是簡單地使用Assembly.Load(Byte[])方法創建一個新的程序集(當dll更改時Assembly.Load(Byte[]) ,然后通過myAssembly.CreateInstance(type.FullName)創建插件實例。 一切正常。 現在,我想支持該插件可以引用組件,並且這些引用可以隨時更改。 我已經實現了Appdomain.AssemblyResolve事件,它當然可以加載一次插件的引用,但在它們更改時不重新加載被引用的dll。

有什么方法可以從程序集中創建實例,並告訴它使用哪個其他程序集作為引用?

小提示:我了解應用程序域,但不能使用它們,因為我不想序列化內存中的數據(許多GB)。

.NET將根據合格的程序集名稱查找您的引用,並且僅當.NET無法自動解析其正在查找的程序集時(通過將合格名稱和裝入上下文與裝入的程序集匹配,或者從探測路徑進行裝入),AssemblyResolve才會啟動)。

因此,如果您已經解析了特定的引用類型,或者它已自動解析,則您將沒有機會從其他位置加載它。 另外,由於無法卸載在給定AppDomain中的特定上下文中加載的程序集(由完整程序集名稱標識),因此您將無法卸載/重新加載同一AppDomain中的那些引用程序集。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM