我有一个具有以下文件夹结构的应用程序:
Application\Modules\XXX
当然,XXX 内的任何程序集都会在 XXX 内找到其他程序集。
问题发生在一些使用反射实例化的实例上:
TProvider providerInstance = (TProvider)Activator.CreateInstance(providerType));
TProvider 有一个方法返回另一个程序集中定义的类(也存储在 XXX 中)。当调用必须加载引用的 providerInstance 的该方法时,我得到一个 FileNotFoundException,即使依赖项位于同一个 XXX 文件夹中,也找不到相关程序集。
查看融合日志,程序集加载程序仅检查应用程序文件夹,而不检查 XXX ...
知道为什么会发生这种情况以及如何解决它吗?
谢谢。
最佳答案
原因是您正在使用 LoadFile
加载程序集方法:
LoadFile does not load files into the LoadFrom context, and does not resolve dependencies using the load path, as the LoadFrom method does.
关于c# - 为什么使用 Activator.CreateInstance 创建的实例不解析引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17743250/