我已经试图在过去的几周里解决这个问题,但还没有找到一个好的解决方案;希望我可以在这里得到答案。
我有两个程序集(ZA和ZB),它们都指向一个共同的项目/ dll(ZC),但可能是不同版本的(即相同的dll名称,相同的命名空间,某些类可能不同)。每个程序集单独工作,但如果其中一个在运行时被另一个加载(例如A加载B),那么我就无法使其工作。需要一些帮助。
这是设置:
- ZA依赖于ZC(公共)版本1.1
- ZB依赖于ZC版本1.0
ZA需要在运行时加载ZB中的内容(它依赖于ZC)。
ZA是主应用程序。
在其bin
目录下,有一个插件目录plugins/plugin-ZB
,我想在其中放置所有ZB及其依赖项(ZC)。
到目前为止,我尝试过以下方法:
Assembly.Load()
使用相同版本的dll-工作正常。
Assembly.Load()
使用不同版本的dll- ZB会加载,但当方法运行时,我会收到一个方法未找到的异常。
AppDomain.Load()
出现文件未找到错误;我甚至使用了委托来解决程序集。
有关ZC的一些详细信息:
- 一些方法是公共静态的(有些不是)。例如Log.Log("hello");
- 一些可能返回值(原始或对象)。
- 一些方法是非静态的(并返回值)。
需要帮助吗? - TIA