引用的 Nuget 包在查找系统类型时出错

Referenced Nuget package has errors finding system types

我在使用 NuGet 将第三方库添加到项目后出现了几个奇怪的错误。该项目以 .NET 4.5.2 为目标。 我得到的错误是标准系统类型不是正确的版本 例如

CS0012:类型 'System.Collections.Generic.IEnumerable`1' 在未引用的程序集中定义。您必须添加对程序集的引用 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

我清理了项目文件夹,删除了bin文件夹,重新安装了 NuGet 打包并重新添加引用无济于事。

图书馆是Remotion.Linq

根据注册表,计算机上安装了以下 .NET 版本

v2.0.50727 2.0.50727.4927 SP2

v3.0 3.0.30729.4926 SP2

v3.5 3.5.30729.4926 SP1

v4
客户端 4.6.01038 完整版 4.6.01038 v4.0
客户端 4.0.0.0

有人知道这里发生了什么吗?

这表明第三方库的目标是框架的 4.0。您要么需要找到更高版本的库,要么在项目属性中将目标框架设置为 4.0 而不是 4.5

事实证明这是一个误导性错误。该库是针对 .NET 4.5.2 构建的,但我安装了 .NET 4.5.1。 Microsoft 在 a KB article (KB2971005) 中对此进行了解释,但您确实需要知道问题所在才能轻松找到该文章。经过大量搜索后,我不知何故偶然发现了它。

解决方法是安装 Microsoft .NET Framework 4.5.2 Developer Pack 的更新版本。