在过去的几周里,我一直在尝试破解这个问题,但还没有找到好的解决方案;希望我能在这里得到答案。
我有两个程序集(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