我写了一个包装类,它使用反射加载其他程序集。 Wrapper.dll也是由进程通过反射加载的,下面是解释方案的图表。
Process.exe
|___Loads__ Wrapper.dll
|_______Loads___1.dll
|___ Depends___ xyz.dll
以下是文件结构
Root
|___A
| |__Process.exe
|___B
|__Wrapper.dll
|__C
|__1.dll
|__xyz.dll
我正在使用Assembly.LoadFile(@"c:\root\B\C\1.dll");
函数在1.dll
中加载Wrapper.dll
但是它在尝试查找A
目录中的依赖项时无法找到依赖项,相同我们有进程可执行文件的目录。
答案 0 :(得分:8)
我找到了解决方案,我刚刚将Assembly.LoadFile
更改为Assembly.LoadFrom
,其加载完全正常。你可以阅读解释here但是以下是它的外壳。
从上下文加载
load-from上下文允许您从路径加载程序集 不在申请路径下,因此不包括在内 探测。它允许从中定位和加载依赖项 路径,因为路径信息由上下文维护。在 此外,此上下文中的程序集可以使用依赖项 加载到默认的加载上下文中。