我有一个项目,我一直在使用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的实现,因为我认为他们的库仍然具有更多功能。还有另一种解决方法吗?为什么没有添加完整的装配参考工作?
答案 0 :(得分:3)
在项目的Newtonsoft.Json参考的“属性”窗口中,将“别名”的值从global
更改为global, foo
。
插入extern alias foo;
作为使用Newtonsoft.Json的任何类的第一行。
使用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中的指令来实现。这是我的方法:
extern alias Newton;
using NewtonReference = Newton::Newtonsoft.Json;
NewtonReference.JsonConvert.DeserializeObject<string>("");
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软件包的先前版本。