我有一个具有以下文件夹结构的应用程序:

Application\Modules\XXX


当然,XXX内部的任何程序集都会在XXX内部找到其他程序集。

该问题发生在使用反射实例化的某些实例上:

TProvider providerInstance = (TProvider)Activator.CreateInstance(providerType));


TProvider有一个返回在另一个程序集中定义的类的方法(也存储在XXX中)。当调用必须加载引用的providerInstance的方法时,我得到了一个FileNotFoundException关于找不到依赖程序集,即使依赖项在同一XXX文件夹中也是如此。

查看融合日志,程序集加载器仅检查Application文件夹,而不检查XXX ...

是否知道为什么会发生以及如何解决?

谢谢。

最佳答案

原因是您要使用LoadFile方法加载程序集:


  LoadFile不会将文件加载到LoadFrom上下文中,并且不会
  像LoadFrom方法一样,使用加载路径来解决依赖关系。


您应该使用LoadFrom方法和加载上下文,或者更好的话,如果可能的话,请使用Load和加载上下文。

关于c# - 为什么用Activator.CreateInstance创建的实例不解析引用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17743250/

10-12 00:24
查看更多