我有一个用于应用程序的 pluginA,pluginA 执行 pluginB,pluginB 是引用库并从中执行一些方法。
首先,我用 Assembly.Load(byte[]) 加载库,然后用 Assembly.Load(byte[]) 加载 pluginB,将程序集存储在内存中,然后使用 Assembly.CreateInstance() 从存储的程序集创建启动类并执行一些启动方法。
一切都很好,直到我尝试在运行时更新库,我正在使用 Assembly.Load(byte[]) 加载新版本的库,加载新版本的库,创建 pluginB 启动类的新实例,但在执行时它正在使用旧版本的库。
我尝试使用 AppDomain.CurrentDomain.AssemblyResolve 事件,但在第一次加载库后,它再也不会被触发。
我添加了
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
对于 pluginA 和 pluginB 项目,我也在这些项目中将 SpecificVersion 属性设置为 false。
但这没有用。
我能做些什么来强制 pluginB 使用新版本的库?