DLL版本在不同的NuGet包中发生冲突

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DLL版本在不同的NuGet包中发生冲突相关的知识,希望对你有一定的参考价值。

在我的解决方案中,一些项目引用了“MahApps”NuGet包,其中包括'System.Windows.Interactivity.dll'4.5.0.0。有些项目还引用了“Prism”NuGet包,其中包括'System.Windows.Interactivity.dll'4.0.0.0。

顺便说一句,app.config的绑定重定向为“0.0.0.0-4.5.0.0”到“4.5.0.0”。

一些项目引用了两个NuGet包,并查看了他们的“参考”列表,其中一些有S.W.I v4.5.0.0,而其他项目有v4.0.0.0。 (我猜这种随机性取决于软件包安装到项目的顺序)。

有时解决方案将构建并运行良好,但如果仅在引用S.W.I 4.0.0.0的项目之一中进行代码更改,则会出现“无法找到v4.5.0.0”的运行时错误。 v4.0.0.0正被复制到构建输出文件夹,但我的绑定重定向告诉它期望4.5.0.0。

有关解决方案的任何想法?我可以尝试卸载并重新安装导致问题的项目中的软件包,看看我是否可以让它们引用MahApps软件包中的4.5.0.0,但我担心的是,这可能无法保证在软件包恢复期间工作,将其搞砸为另一个开发人员(或构建服务器)。

答案

我最终升级到Prism 6,其中不包含自己的DLL。值得庆幸的是,这是一项简单的工作。

我还必须删除MahApps包然后再添加它,以使Visual Studio添加该包的System.Windows.Interactivity.dll(4.5.0.0)。

以上是关于DLL版本在不同的NuGet包中发生冲突的主要内容,如果未能解决你的问题,请参考以下文章

卡住不活动的 msbuild.exe 进程、锁定 Stylecop.dll、Nuget AccessViolationException 和 CI 构建相互冲突的奥秘

Android 解决之依赖包中添加的com.android.support版本不同导致冲突的问题

传递依赖导致相同 DLL 的版本冲突

当它们的非托管依赖项发生冲突时,如何使用 2 个第三方 .net 库?

从 Nuget 包中自动提取本机和托管 DLL

从Delphi调用C ++ DLL时发生访问冲突