我有一个项目需要间接使用第三方库的三个不同版本。这些版本彼此不兼容,所以我不能使用绑定重定向 - 它必须是确切的.dll
文件。(这些库是Spire.Doc、Spire.XLS和Spire.PDF;三个都引用了 Spire.PDF DLL)
我已将这三个组件分成单独的包装器项目,并创建了包装对库中任何内容的直接引用的类。但是,这并不能解决我的问题:“消费”项目仍然必须将所有库复制到bin
文件夹才能运行。构建过程不知道要复制哪个版本,因此只复制最新的版本。由于存在错误的 DLL,这给了我运行时异常。
我考虑过/尝试过的:
- 添加绑定重定向到特定版本(运行时异常,因为找不到库的确切版本)
- 使用构建后步骤合并包装器项目(再次出现运行时异常,抱怨缺少库 DLL)
- 为应用程序的每个部分创建单独的控制台应用程序,然后单独调用它们 - 这是一个复杂的最后手段,我真的不想这样做!
我已经读过extern alias可能会有所帮助 - 但据我所知,您只能区分具有不同名称的程序集。Spire.PDF 库在每个项目中具有相同的名称(以及相同的签名公共令牌)。
如何在同一个解决方案中独立使用这三个不同版本的库?
编辑:
此问题与建议的副本略有不同,因为我无法更改依赖库中的任何代码。Spire.Doc 依赖于不同版本的 Spire.PDF 到 Spire.XLS