C#程序中通过 DllImport 加载了两个 dll 形式的 sdk 包,这两个 sdk 包依赖 3 个相同名称但不同版本的 dll,加载关系是这样的: 第一个 sdk:A dll -> B dll -> C dll,第二个 sdk:X dll -> Y dll -> C dll
现在的问题是: 两个版本的 sdk 要同时加载,但一旦一个 sdk 加载成功,调用另外一个就会报错,如何指定每个 dll 只加载自己依赖的 C dll ?
网上的解决方案: 1、app.config 通过 dependentAssembly 声明不同版本的 dll,但是因为 C dll 都是每个 sdk 自己魔改的,没有源码,无法获取 publicKeyToken 2、多进程解决,但考虑到现有程序是单进程,如果改为多进程,已有功能的改动量会比较大 3、协调 sdk 提供方提供静态 lib 库,这个无法做到
所以,有什么改动量比较小的解决方案么?