我有一个具有以下文件夹结构的应用程序:
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/