1

情况就是这样(我无法改变这种方法,只是在寻找解决方案):

  • AppFolder\StartApp.exe
  • AppFolder\General.dll
  • AppFolder\Bll\Business.dll
  • AppFolder\Bll\General.dll

StartApp.exe 正在实例化 Business.dll 中的一个类(使用 CreateInstance),并在该类中运行一个方法。原来我们总是使用AppFolder中的General.dll,但我们确实需要使用Bll文件夹中的General.dll(这是最新版本)

4

2 回答 2

1

您可以在配置中使用<probing><codebase> 元素来指定程序集的路径

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <probing privatePath="bin;bin2\subbin;bin3"/>
      </assemblyBinding>
   </runtime>
</configuration>

如何定位运行时程序集 - MSDN

于 2013-09-28T17:45:56.263 回答
0

不直接使用Activator.CreateInstance而是使用Assembly.LoadFrom来加载程序集然后迭代GetTypes以找到要实例化的类型怎么样。获得类型后,应用Activator.CreateInstance.

据我记得以这种方式加载的类型会导致Appdomain.AssemblyResolve它需要的 DLL 事件。处理该事件并自己提供依赖程序集。这将绕过位于应用程序文件夹中的 DLL。

试一试。大量的文档可在网上AssemblyResolveLoadFrom上下文中获得。

于 2013-09-28T18:41:24.727 回答