Ошибка CS0433: тип "JsonValue" существует в "System.Json, версия =2.0.5.0" и "Xamarin.Auth" (CS0433)
Я пытаюсь создать приложение в Visual Studio для Mac с Xamarin.Forms. В этом приложении я использую Xamarin.Auth для хранения некоторых пользовательских данных. Теперь я хочу добавить соединение с API с помощью JSON. Я добавил System.Json и добавил свой код. Но проблема в том, что я получаю ошибку:
Ошибка CS0433: тип "JsonValue" существует как в "System.Json, версия =2.0.5.0", так и в "Xamarin.Auth" (CS0433).
Я удалил и добавил Xamarin.Auth в проект. Я удалил папки OBJ и BIN, когда Visual Studio была закрыта, запустил VS, очистил решение, пересобрал решение и попытался снова, но ошибка все та же. Я не могу понять, в чем проблема.
Я не совсем уверен, поможет ли это, но вот один фрагмент кода, в котором происходит ошибка. Я знаю, что функция не возвращает ничего в данный момент, но я просто пытаюсь выяснить, как выполнять вызовы JSON/API и получить код для компиляции без ошибок:
public class DBhandler
{
public async Task<List<Object>> GetItemsFromApiASync(Type callingClass, string apiDir, string apiFile)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(ApiAddress + apiDir + apiFile));
request.ContentType = "application/json";
request.Method = "Get";
using (WebResponse response = await request.GetResponseAsync())
{
using (Stream stream = response.GetResponseStream())
{
System.Json.JsonValue jsonDoc = await Task.Run(() => System.Json.JsonObject.Load(stream));
object[] parametersArray = new object[] { jsonDoc };
MethodInfo methodInfo = callingClass.GetMethod("ConvertApiResultToObject");
methodInfo.Invoke(methodInfo, parametersArray);
}
}
return null;
}
2 ответа
Внезапно я вспомнил, как решить эту проблему: мне помогли комментарии к вопросу (спасибо @Tcraft, @DiegoRafaelSouza). я добавил System.Json
к ссылкам на разных платформах (я использую общий проект, так далее project.IOS
а также project.Android
). Щелкните правой кнопкой мыши на properties
и помечены Local Copy
, Затем я добавил псевдоним SystemJsonAlias
, И использовал using SystemJsonAlias = System.Json
во всех моих файлах.cs, где это необходимо.
Возможно, это помогает кому-то еще.
Я столкнулся с той же проблемой при создании проекта Android Xamarin, который ссылался на Xamarin.Auth и несколько других пакетов NuGet и компонента Facebook Xamarin. Я смог просто удалить System.Json из ссылок моего проекта, а затем мой проект смог скомпилироваться и запустить.