繁体   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