50

我正在安装 NewtonSoft.Json 以在 .NET 应用程序中解析 Json。当我使用 Visual Studio(VS) 2012 时,无法通过 NuGet 安装它。这是我得到的错误:

'Newtonsoft.Json' already has a dependency defined for 'Microsoft.CSharp'

我试图复制 DLL 并使用它,似乎在这个版本(10.0.2)中有些依赖关系搞砸了。

经过几个小时的研究,终于发现是VS2012和Newtonsoft Json 10.0.2的兼容性问题。

4

7 回答 7

75

因为 VS 2012 的 NuGet 包管理器(版本 2.8.60318.667)不支持 .NETStandard(用于最新的 Newtonsoft Json Parser Lib。https: //github.com/NuGet/Home/issues/3131

我通过安装旧版本的 Newtonsoft Json 解决了这个问题:

PM> Install-Package Newtonsoft.Json -Version 9.0.1

更多详细信息: https ://github.com/NuGet/Home/issues/5162 。

于 2017-06-13T21:54:47.300 回答
15

安装/恢复面向 .NET 标准的 NuGet 包需要 NuGet.exe 版本 3.4+。

来自 v3.4 的发行说明:https ://docs.microsoft.com/en-us/nuget/release-notes/nuget-3.4

新的功能

  • 支持 netstandard 和 netstandardapp 框架名字对象

此版本的 NuGet 附带 VS2015 Update 2

NuGet 3.4 作为 Visual Studio 2015 Update 2 和 Visual Studio 15 Preview Release 的一部分于 2016 年 3 月 30 日发布

于 2017-11-07T16:06:39.017 回答
4

我在使用 VS2015 并创建一个依赖于 Newtonsoft.Json 版本 = 10.0.3 的 NuGet 包时遇到了同样的问题。我使用了 Vin.X 在他的回答中建议的方法作为解决方法。

将 Newtonsoft.Json version=9.0.1 安装到您的项目后,在您的 .nuspec 文件中添加以下描述。

<dependencies>
      <dependency id="Newtonsoft.Json" version="10.0.3" />
</dependencies>

使用您的包的应用程序将安装 Newtonsoft.Json version=10.0.3 以及您的包作为项目的依赖项。

于 2017-07-12T18:31:40.363 回答
3

尝试从解决方案包目录中删除现有版本的包,然后尝试以下命令。它对我有用。

    PM> Install-Package Newtonsoft.Json -Version 9.0.1
于 2019-05-22T05:27:07.790 回答
1

我遇到了同样的问题。我认为你需要为 VS2013 更新 NuGet(* Prob VS2012 也是)

这里

https://marketplace.visualstudio.com/items?itemName=NuGetTeam.NuGetPackageManagerforVisualStudio2013

于 2020-07-30T13:20:21.310 回答
0

这个问题不是专门关于 TFS/Azure Devops,但我今天早上在标题中遇到了异常,我的解决办法是不必降级版本。

我们在构建服务器上更新了 Visual Studio,我们的所有构建都失败了。

以下是我目前定位的版本:

  • 努吉特:5.4.0
  • 牛顿软件.Json:12.0.3
  • Azure Devops 服务器(本地):2019
  • 视觉工作室 2019:16.5.2

我们发现我们需要NuGet Tool Installer在任务列表的开头添加一个名为的任务,以强制它使用版本 5.4.0,因为自动发现选择了旧版本并且失败了。

Nuget 工具安装程序

一旦它起作用并且包恢复,它就无法打包我们的源代码以进行分发。所以我们有最新的 NuGet.exe,NewtonSoft.Json 的 .NET Framework 参考(即不是 netstandard),但它仍然无法正常工作。我们以前使用NuGet Packager过,我不完全确定该任务何时被弃用,但在 VS 更新之前它仍然对我们有用。有一个名为的新任务NuGet,其中包含不同功能的下拉菜单。

NuGet

选择Pack并配置字段以模仿已弃用的任务导致成功构建的内容。

于 2020-08-04T20:51:28.150 回答
-1

尝试安装 Newtonsoft MsgPack 它会将 Newtonsoft.json DLL 安装到您的项目中。

于 2017-11-03T04:16:31.523 回答