JsonConvert存在于Newtonsoft和System.Net.Http.Formatting Visual Studio 2017 for Mac中

时间:2017-05-19 17:26:29

标签: json macos msbuild visual-studio-2017

我有一个项目,我一直在使用Xamarin的MonoDevelop。

我一直在使用Newtonsoft的Json nuget包。

我刚刚下载了Visual Studio 2017 for Mac。

我尝试在VS2017Mac中构建我的项目并收到以下错误:

error CS0433: The type 'JsonConvert' exists in both 'Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' and 'System.Net.Http.Formatting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'

我以为我应该能够通过添加Newtonsoft.Json来解决这个问题。到了JsonConvert的前面,但是没有用。

如果可能的话,我不想删除Newtonsoft的实现,因为我认为他们的库仍然具有更多功能。还有另一种解决方法吗?为什么没有添加完整的装配参考工作?

4 个答案:

答案 0 :(得分:3)

  1. 在项目的Newtonsoft.Json参考的“属性”窗口中,将“别名”的值从global更改为global, foo

  2. 插入extern alias foo;作为使用Newtonsoft.Json的任何类的第一行。

  3. 使用foo.限定成员资格。示例:foo.Newtonsoft.Json.JsonConvert.SerializeObject(someObject)}

答案 1 :(得分:2)

我收到以下错误消息,但在C#中使用了另一个库(Ranet):

  

错误CS0433类型'JsonConvert'同时存在   'Microsoft.AnalysisServices.Tabular.Json,版本= 14.0.0.0,   文化=中性,PublicKeyToken = 89845dcd8080cc91'和   'Newtonsoft.Json,版本= 11.0.0.0,文化=中性,   PublicKeyToken = 30ad4fe6b2a6aeed'

我使用别名解决了该问题,但是我想提供更多细节,因为我难以使用这些答案和other answers中的指令来实现。这是我的方法:

  1. 在解决方案资源管理器中,右键单击“ Newtonsoft.json”,将“,Newton”添加到别名字段,它应类似于以下内容:

enter image description here

  1. 将以下代码添加到文件的第一行(在所有using语句之前):
extern alias Newton;
  1. 在using语句的末尾添加以下引用:
using NewtonReference = Newton::Newtonsoft.Json;
  1. 现在您可以使用以下代码调用Newtonsoft方法:
NewtonReference.JsonConvert.DeserializeObject<string>("");
  1. 最后一个例子如下:
extern alias Newton;

using System;
using NewtonReference = Newton::Newtonsoft.Json;

public class Test {     
    public static List<string> TestMethod() {
        NewtonReference.JsonConvert.DeserializeObject<string>("");  
    }  
}

希望这会对其他人有所帮助:)

答案 2 :(得分:0)

如果有人仍在寻找解决方案,那么我去了项目参考,它显示了Newtonsoft的两个不同版本(对我来说是12.0.0和6.0.0版)。我单击了较旧的版本,它向我显示了文件的存储路径。我只是去那里删除了它。完成此操作后,我在9.0.0版中遇到了相同的问题,并且执行了相同的操作。当我再次打开它时,问题已解决。

答案 3 :(得分:-1)

安装newtonsoft.json软件包的先前版本。

相关问题