0

我创建了一个支持重新加载插件并且不使用多个 AppDomain 的插件架构。我只是简单地创建一个新程序集,当 dll 更改时,使用该Assembly.Load(Byte[])方法创建插件实例,然后通过myAssembly.CreateInstance(type.FullName). 这一切都很好。现在我想支持插件可以引用程序集,并且可以动态更改这些引用。我已经实现Appdomain.AssemblyResolve了事件,它当然可以加载插件的引用一次,但不会在引用的 dll 更改时重新加载它们。

有什么方法可以从程序集创建一个实例并告诉它哪些其他程序集用作参考?

小提示:我知道应用程序域但不能使用它们,因为我不想序列化我在内存中的数据(许多 GB)。

4

1 回答 1

1

.NET 将根据限定的程序集名称查找您的引用,并且仅当 .NET 无法自动解析它正在查找的程序集时(通过将限定名称和加载上下文与加载的程序集匹配,或从探测路径加载),AssemblyResolve 才会触发)。

所以如果你已经解析了一个特定的引用类型,或者它是自动解析的,你将没有机会从其他地方加载它。此外,由于无法卸载在给定 AppDomain 的特定上下文中加载的程序集(由完整的程序集名称标识),因此您将无法在同一 AppDomain 中卸载/重新加载那些引用的程序集。

于 2012-10-03T08:13:56.050 回答