为了避免此处描述的问题:
无法加载类型';System.Runtime.CompilerServices.ExtensionAttribute';来自程序集';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兼容的版本来构建我的项目解决方案?
从包管理器控制台运行update-package -reinstall
。
我发现这样做的方法是:
- 关闭VS解决方案
- 手动编辑解决方案中的所有packages.config文件,以指向您想要的版本(例如,我将它们更改为id="Newtonsoft.Json"version="6.0.3"targetFramework="net40")
- 转到磁盘上解决方案的软件包文件夹,然后删除其中的版本
- 从解决方案的输出路径中删除Newtonsoft.Json dll和xml
- 删除解决方案中使用json.net的项目的bin目录
- 在visualstudio中打开解决方案
- 打开包管理器(使用菜单:工具、NuGet包管理器、管理我版本VS中解决方案的NuGet包)
- 在包管理器对话框的顶部,它抱怨mssing包-单击"还原"
- 转到磁盘上解决方案的软件包文件夹,检查它是否安装了正确的版本
- 清理解决方案(否则输出路径中的Newtonsoft.Json dll和xml将不会被替换)
- 构建并检查输出路径中的DLL是否是正确的版本以及是否为正确的框架(NewtonSoft将.net版本放在旧版本的文件描述中)
如果这些步骤中的任何一个可以优化,我很想知道如何。。。