如何安装与.net 4.0兼容的json.net版本?

时间:2013-11-25 17:37:51

标签: .net json.net nuget

要避免此处描述的问题:

Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'mscorlib

我正在尝试构建我的项目以.net 4.0而不是4.5(在Visual Studio 2013中),但是我收到以下错误:

  • 找不到类型或命名空间名称'Newtonsoft'(是吗? 缺少using指令或程序集引用?)

    无法解析主要参考“Newtonsoft.Json”,因为 它是针对“.NETFramework,Version = v4.5”框架构建的。这个 是比当前目标框架“.NETFramework,Version = v4.0”更高的版本。

所以我想安装一个与.net 4.0兼容的json.net版本。我看到下载的NuGet包除了包含lib / 4.5之外还包含一个lib / 4.0目录,但我无法弄清楚如何让包管理器使用它来代替4.5版本。

如何使用与.net 4.0兼容的json.net版本而不是仅适用于.net 4.5的版本来获取我的项目解决方案?

2 个答案:

答案 0 :(得分:5)

从包管理器控制台运行update-package -reinstall

答案 1 :(得分:1)

我发现这样做的方式是:

  1. 关闭您的VS解决方案
  2. 手动编辑解决方案中的所有packages.config文件以指向您想要的版本(例如,对我来说,我将它们更改为id =“Newtonsoft.Json”version =“6.0.3”targetFramework =“net40”)
  3. 转到解决方案的磁盘上的packages文件夹并删除其中的版本
  4. 从解决方案的输出路径中删除Newtonsoft.Json dll和xml
  5. 删除解决方案中使用json.net的项目的bin目录
  6. 在visual studio中打开解决方案
  7. 打开包管理器(使用菜单:工具,NuGet包管理器,在我的VS版本中管理NuGet包的解决方案)
  8. 在软件包管理器对话框的顶部,它抱怨mssing包 - 单击Restore
  9. 转到解决方案的磁盘上的packages文件夹,并检查它是否安装了正确的版本
  10. 清理解决方案(否则将不会在输出路径中替换Newtonsoft.Json dll和xml)
  11. 构建并检查输出路径中的DLL是否为正确的版本以及正确的框架(NewtonSoft将.net版本放在旧版本的文件描述中)
  12. 如果可以优化这些步骤,我很想知道如何......