假设我有一个使用第三方 .net 程序集 B.dll 和第三方 .net 程序集 C.dll 的 .net 程序集 A.dll。
事实证明,B.dll 内部使用非托管程序集 D.dll(版本 1) C.dll 使用非托管程序集 D.dll(版本 2)。
B 和 C 来自不同的供应商,仅使用其正确版本的 D.dll 进行测试。
如何部署 A 以使 B 和 C 正常工作?
编辑:
我认为存在三个不同的问题:
1) 如何从外部控制 B 和 C 寻找 D 的路径。
2) 如何从外部控制 D 用于其自身依赖项的路径。
3) 如何确保流程正确引导函数调用。
我的研究表明,如果没有对所有模块的编译时控制,这可能是不可能的...
最佳答案
我会尝试通过“探测”配置部分来配置多个 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 文件夹。
关于.net - 当非托管依赖项发生冲突时如何使用 2 个第三方 .net 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7433406/