【发布时间】:2009-07-27 17:01:25
【问题描述】:
过去几周我一直在尝试破解这个问题,但还没有找到好的解决方案;希望我能在这里得到答案。
我有两个程序集(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() got a file not found 错误;我什至使用委托来解析程序集。
关于ZC的一些细节:
- 有些方法是公共静态的(有些不是)。例如。 Log.Log("hello");
- 有些可能返回值(基元或对象)。
- 一些方法是非静态的(和返回值)。
帮助? - TIA
【问题讨论】: