如何在非托管依赖项冲突时使用2个第三方.net库?

时间:2011-09-15 15:28:29

标签: .net windows deployment dll

假设我有.net程序集A.dll使用第三方.net程序集B.dll和第三方.net程序集C.dll。

事实证明,内部B.dll使用非托管程序集D.dll(版本1) 和C.dll使用非托管程序集D.dll(版本2)。

B和C来自不同的供应商,仅使用正确版本的D.dll进行测试。

如何部署A使B和C正常工作?

编辑:

我认为有三个不同的问题:

1)如何从外部控制用于寻找D的路径B和C.

2)如何从外部控制D用于其自身依赖的路径。

3)如何确保进程正确引导函数调用。

我的研究表明,如果不对所有模块进行编译时控制,这可能是不可能的......

1 个答案:

答案 0 :(得分:1)

我会尝试通过“探测”配置部分配置几个bin文件夹。

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

然后我会将B.dll及其非托管依赖项放入bin \ B文件夹,将C.dll及其非托管依赖项放在bin \ C文件夹中。