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 库,这个无法做到
所以,有什么改动量比较小的解决方案么?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.