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

Mub*_*har 4 .net c# reflection

我写了一个包装类,它使用反射加载其他程序集.Wrapper.dll也是由进程通过反射加载的,下面是解释方案的图表.

Process.exe  
         |___Loads__ Wrapper.dll  
                         |_______Loads___1.dll  
                                           |___ Depends___ xyz.dll  
Run Code Online (Sandbox Code Playgroud)

以下是文件结构

Root
  |___A  
  |   |__Process.exe  
  |___B  
      |__Wrapper.dll   
      |__C
         |__1.dll
         |__xyz.dll
Run Code Online (Sandbox Code Playgroud)

我正在使用Assembly.LoadFile(@"c:\root\B\C\1.dll");函数加载1.dllin Wrapper.dll但是它无法找到依赖项,因为它试图在Adir中找到依赖项,这是我们有进程可执行文件的目录.

Mub*_*har 8

我找到了解决方案,我刚刚改变了Assembly.LoadFileAssembly.LoadFrom,它的加载非常好.你可以在这里阅读解释 但是以下是它的外壳.

加载来自上下文

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