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

8
为了避免出现以下问题: 无法从程序集'mscorlib'加载类型'System.Runtime.CompilerServices.ExtensionAttribute' 我尝试将我的项目构建为目标.NET 4.0而不是4.5(在Visual Studio 2013中),但我收到以下错误:
- 'Newtonsoft'类型或命名空间名称找不到(是否缺少使用指令或程序集引用?) - 主引用“Newtonsoft.Json”无法解析,因为它是针对“.NETFramework,Version=v4.5”框架构建的。这是比当前目标框架“.NETFramework,Version=v4.0”更高的版本。
因此,我想安装与.NET 4.0兼容的json.net版本。我看到下载的NuGet包中包含一个lib/4.0目录和lib/4.5,但我不知道如何使包管理器使用此版本而不是4.5版本。
如何使用与仅适用于.net 4.5的版本不兼容的json.net版本来构建我的项目解决方案,而是使用与.net 4.0兼容的版本?
2个回答

5
在包管理器控制台中运行update-package -reinstall命令。

1
这将安装最新版本的Newtonsoft.Json包(其中包括所有目标:.net2.0、3.5、4.0、4.5、portable4.0和portable 4.5),然后选择与您当前csproj设置匹配的lib目标。 - Reda

2
我找到的方法是:
  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目录中删除您解决方案的bin目录
  6. 打开visual studio中的解决方案
  7. 打开包管理器(使用菜单:工具,NuGet包管理器,对我的版本的解决方案进行NuGet包管理)
  8. 在包管理器对话框的顶部,它会抱怨缺少软件包 - 单击还原
  9. 进入您解决方案存储在磁盘上的packages文件夹,检查它是否安装了正确的版本
  10. 清理解决方案(否则Newtonsoft.Json dll和xml将不会被替换到输出路径中)
  11. 构建并检查输出路径中的DLL是否为正确的版本并且针对正确的框架(NewtonSoft将旧版的.net版本放在文件说明中)
如果有任何可优化的步骤,我很愿意知道...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接