【发布时间】:2016-11-09 17:42:55
【问题描述】:
这很复杂,但这里是:
为了与另一个应用程序集成(在单独的目录中),我们动态加载其中一个程序集,然后使用 Activator 从该程序集中实例化一个对象。目标程序集加载正常,但是在创建对象实例时,它会尝试动态加载一些额外的依赖项并失败,因为它在我们的应用程序目录中找到了它们的更新版本:
var assm = Assembly.LoadFrom("full.path.to.asm"));
var objType = assm.GetType("MyType", true);
var obj = Activator.CreateInstance(objType);
assm 加载正常,并获得objType。激活obj 时发生异常,因为它依赖于旧版本的程序集(它确实在其目录中),但它首先在我们的应用程序目录中找到一个新版本并抱怨它是错误的签名。
我尝试先设置 Environment.CurrentDirectory,但没有任何区别。
【问题讨论】: