使用不同版本的引用DLL
不知怎的,我很幸运,从来没有处理过这个问题,尽管我认为这是一个常见的问题:
我有一个网络项目,我们称之为SomeProject
。 SomeProject
引用了第三方库,我们称之为SomeThirdParty
,版本1.0。 SomeProject
还引用了一个本土类库,我们称之为SomeLibrary
。 SomeLibrary
也有SomeLibrary
的引用,但是有一个不同的版本(比方说2.0)。
SomeThirdParty
1.0和2.0 SomeThirdParty
共享大多数相同的签名,但它们是不同的实现。 我需要SomeProject
使用1.0实现, SomeLibrary
使用2.0实现,如果可能的话。
我使用它对log4net的引用编译SomeProject
。 最终在bin目录中的DLL是SomeProject
引用的DLL。 在运行时,当SomeLibrary
代码运行时,它会尝试从SomeLibrary
2.0版本执行代码,当然SomeThirdParty
失败,抛出FileLoadException: Could not load file or assembly '
SomeThirdParty , Version=2.0.0.0, Culture=[etc.]' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference.
etc。 , Version=2.0.0.0, Culture=[etc.]' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference.
, Version=2.0.0.0, Culture=[etc.]' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference.
显然,我可以将SomeProject
升级到较新的DLL或将SomeLibrary
降级到较旧的DLL,但由于许多原因它不是理想的。
我认为正确的答案涉及在GAC中安装SomeThirdParty,但我不确定我将如何做到这一点,以及它将如何影响其他开发人员和服务器。
任何您可能有的建议表示赞赏。
谢谢您的帮助。
将SomeThirdParty的两个版本都放入GAC应该可以做你想要的。 使用gacutil实用程序或开始 – >运行 – >程序集然后拖放。
从我之前的回答: https : //stackoverflow.com/a/19576769/2367343
我昨天遇到了使用Oracle.DataAccess.dll的visual studio web开发人员。
我的解决方案
右键单击您的项目(* .csproj)并进行编辑。
正下方:
地点
true
然后重建您的解决方案。 在包含它们时(必需),必须将两个版本dll分离到项目中的两个不同目录中。
我做到了
ora11 >> Oracle.DataAccess.dll (Version 11) ora9 >> Oracle.DataAccess.dll (Version 9)
这样做允许您的IDE使用两个版本的DLL。
上述就是C#学习教程:使用不同版本的引用DLL分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1000543.html