我有一个需要间接使用三个不同版本的第三方库的项目。这些版本互不兼容,所以我不能使用绑定重定向 - 它必须是确切的.dll
文件。 (该库是Spire.Doc,Spire.XLS & Spire.PDF;在Spire.PDF DLL由三个引用)引用同一个DLL的多个版本
我有三个组成部分分离成单个包装项目,并创建的类包装,其在图书馆的任何直接引用。但是,这并没有解决我的问题:'消费'项目仍然需要将所有库复制到bin
文件夹才能运行。构建过程不知道要复制哪个版本,因此只复制最新版本。由于存在错误的DLL,这给我提供了运行时异常。
我已经考虑/尝试:
- 添加一个绑定重定向到一个特定版本(运行时异常,因为库的确切版本未找到)
- 使用生成后步骤合并包装器项目(同样是一个运行时异常,抱怨缺少库DLL)
- 为应用程序的每个部分创建单独的控制台应用程序,然后单独调用它们 - 这是一个复杂的最后手段,我真的而不是做!
我读过extern alias可能会有所帮助 - 但据我所知,您只能区分名称不同的程序集。 Spire.PDF库在每个项目中具有相同的名称(以及相同的签名公共令牌)。
如何在同一解决方案中独立使用这三个独立版本的库?
编辑:
这个问题所建议的重复略有不同,因为我没有改变依赖库的任何代码的能力。 Spire.Doc依赖于不同版本的Spire.PDF Spire.XLS
有趣的问题!我想你可能需要在运行时反思并加载dll。这有可能吗? – Muthu
也许我并没有完全理解这个问题,但就我所见,问题在于Visual Studio将文件复制到另一个上。为什么不告诉它不要这样做呢? – Dialecticus
此外,也许这个问题可以帮助:http://stackoverflow.com/q/5260404/395718 – Dialecticus