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 之外没有其他 DLL。值得庆幸的是,这是一项简单的工作。

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

最新更新