Assembly.LoadFile在Executeable的Location中查找依赖项

时间:2016-03-18 03:53:54

标签: c# .net reflection

我写了一个包装类,它使用反射加载其他程序集。 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目录中的依赖项时无法找到依赖项,相同我们有进程可执行文件的目录。

1 个答案:

答案 0 :(得分:8)

我找到了解决方案,我刚刚将Assembly.LoadFile更改为Assembly.LoadFrom,其加载完全正常。你可以阅读解释here但是以下是它的外壳。

  

从上下文加载

     

load-from上下文允许您从路径加载程序集   不在申请路径下,因此不包括在内   探测。它允许从中定位和加载依赖项   路径,因为路径信息由上下文维护。在   此外,此上下文中的程序集可以使用依赖项   加载到默认的加载上下文中。