'Newtonsoft.Json'已经为'Microsoft.CSharp'

时间:2017-06-13 21:50:35

标签: .net json.net jsonparser

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

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

我试图将dll复制过来并使用它,似乎在这个版本(10.0.2)中搞砸了一些依赖项。

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

7 个答案:

答案 0 :(得分:60)

因为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

答案 1 :(得分:12)

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

从3.4的发行说明:https://docs.microsoft.com/en-us/nuget/release-notes/nuget-3.4

  

新功能

     
      
  • 支持netstandard和netstandardapp框架标记
  •   

此版本的NuGet附带VS2015 Update 2

  

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

答案 2 :(得分: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以及您的软件包作为项目的依赖项。

答案 3 :(得分:0)

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

var r = 80;
var g = 130;
var b = 211;
var hex = 0xff000000 | ( r << 16) | ( g << 8) | b;
console.log((hex >>> 0).toString(16));

答案 4 :(得分:0)

我遇到了同样的问题。我认为您需要更新VS2013的NuGet(*还可能是VS2012)

这里

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

答案 5 :(得分:0)

这个问题不是专门针对TFS / Azure Devops的,但是今天早晨我在标题中遇到了一个例外,我的解决方案是必须降级版本。

我们在构建服务器上更新了Visual Studio,并且所有构建都中断了。

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

  • Nuget:5.4.0
  • Newtonsoft.Json:12.0.3
  • Azure Devops Server(prem):2019
  • Visual Studio 2019:16.5.2

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

Nuget Tool Installer

此功能正常运行并还原了软件包后,便无法打包我们的源以进行分发。因此,我们拥有NewtonSoft.Json的最新NuGet.exe,.NET Framework参考(即非netstandard),但仍无法正常工作。我们以前使用的是NuGet Packager,但我不确定该任务何时被弃用,但是直到VS更新,它仍然对我们有用。有一个名为NuGet的新任务,其中包含用于不同功能的下拉菜单。

NuGet

选择Pack,并配置字段以模仿不推荐使用的任务导致成功构建的内容。

答案 6 :(得分:-1)

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