【发布时间】:2014-06-23 17:02:41
【问题描述】:
我有一个目标框架为 4.5.1 的 .NET 项目。这个项目依赖于一个只有 .NET 4.0 版本的 NuGet 库,而这个库又依赖于 MVVMLight:
MyProject (4.5.1) --> 依赖于 MyLibrary (4.0) --> 依赖于 MVVMLight (4.0)
MVVMLight NuGet 也有 4.5 版本,因此当它安装在 MyProject 上时,它最终会引用 4.5 版本(与使用 MVVMLight for .NET 4.0 编译的 MyLibrary 不同)。
这会导致以下编译错误:
5>...\Adorners\CircleAdorner.cs(19,18,19,31):错误 CS0012:类型“GalaSoft.MvvmLight.ObservableObject”在未引用的程序集中定义。您必须添加对程序集“GalaSoft.MvvmLight, Version=4.4.32.18939, Culture=neutral, PublicKeyToken=null”的引用。
错误来自一个类 CircleAdorner,它继承自 MyLibrary 中定义的一个类,而该类又继承自 MVVMLight 的 ObservableObject。
这种情况“合法”吗?从 .NET 4.5.1 项目中引用 .NET 4.0 库可以吗?据我了解应该没问题。但是,这里的问题是 .NET 4.0 项目需要另一个在这里不满足的依赖项。
另外,我注意到 .NET 4.5 的 GalaSoft.MvvmLight 的 DLL 版本是 4.4.32.39728 而不是 4.4.32.18939。在项目中,我用<SpecificVersion>False</SpecificVersion> 标记了这个引用,但它没有帮助。
【问题讨论】:
-
4.0 的依赖关系很好。依赖于两个完全不同版本的库是不好的。 DLL Hell 会烧死你。
标签: .net-4.0 nuget mvvm-light .net-4.5