需要一种方法来引用同一第三方DLL的2个不同版本

问题描述 投票:3回答:3

我有一个包含2个项目的解决方案:Proj1和Proj2,其中Proj1是启动项目。

Proj1引用Proj2(以调用Proj2的类),并且它具有现有的代码,该代码还引用了名为A的第三方DLL,版本为1.0.0.0。

Proj2引用了相同的第三方DLL A,但是它引用的版本是2.0.0.0,因为该项目中的类需要1.0.0.0中不提供的较新的实现。

到目前为止,我已经尝试了以下方法:1.引用A时将“特定版本”切换为true2.在Proj2中添加了一个名为“ v2Folder”的文件夹,并向其中添加了一个v2.0.0.0,并将其“复制到输出目录”设置为“始终复制”3.在app.config中添加了“探测路径”,以指向带有v2.0.0.0 DLL的子文件夹。

我想要的是在普通\ bin \文件夹中看到一个v1.0.0.0,在\ bin \ v2Folder中看到一个v2.0.0.0,我希望当我运行Proj1.exe时,Proj1的旧代码仍然会调用A v1.0.0.0的方法,并且仅在调用Proj2实现的方法时才调用A v2.0.0.0的方法。

问题是,当我构建解决方案时,v1.0.0.0被v2.0.0.0取代,构建日志具有类似“无法解决A,Version = 2.0.0.0,Culture =中性,PublicKeyToken = blah”和“ A,版本= 1.0.0.0,文化=中性,PublicKeyToken = blah”。任意选择“ A,版本= 2.0.0.0,文化=中性,PublicKeyToken = blah”。]

有人可以帮忙吗?

我有一个包含2个项目的解决方案:Proj1和Proj2,其中Proj1是启动项目。 Proj1引用Proj2(以调用Proj2的类),并且它已有的代码也引用了第三个...

c# dll
3个回答
2
投票

这可能使用extern alias功能。编译时,请为DLL文件添加别名,例如:]


0
投票

将第三方dll版本2.0重命名为A_2.dll,并添加对重命名的dll的引用。


0
投票

即使两个dll版本具有相同的公共令牌也可以实现。

© www.soinside.com 2019 - 2024. All rights reserved.