2017-11-06 3 views
1

私はXamarinでMac用Visual Studioでアプリケーションを作成しようとしています。フォーム。このアプリでは、Xamarin.Authを使用してユーザーの詳細を保存しています。 JSONを使用してAPIとの接続を追加します。 System.Jsonを追加してコードを追加しました。しかし、問題は私がエラーを取得します:エラーCS0433: 'JsonValue'タイプが 'System.Json、Version = 2.0.5.0'および 'Xamarin.Auth'(CS0433)に存在します。

Error CS0433: The type 'JsonValue' exists in both 'System.Json, Version=2.0.5.0' and 'Xamarin.Auth' (CS0433).

私は削除し、プロジェクトにXamarin.Authを追加しました。私は、Visual Studioを閉じて、VSを起動し、ソリューションをクリーンアップし、ソリューションを再構築して、もう一度試してみましたが、同じエラーが発生したときにOBJとBINフォルダを削除しました。私は問題が何であるかを知ることができない。

エラーが発生した場合のコードスニペットが1つあります/ APIコールとエラーなしでコンパイルするコードを取得:Xamarin.Authおよびその他のいくつかのNuGetパッケージやFacebook Xamarinのコンポーネントを参照XamarinのAndroidプロジェクトを作成するときに、私は同じ問題に遭遇した

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; 
    } 
+0

あなたのクラスを完全に修飾して(つまり名前空間を含める)、コンパイラはあなたが使いたいものを知っているようにします。 –

+0

あなたのネームスペース 'JsonValue = System.Json.JsonValue'を使ってセットを試し、修飾された使用法をメソッドから外してください –

+0

*/reference *コンパイラオプションのエイリアス機能を使用してください – Tcraft

答えて

0

突然私はこれを解決する方法を覚えていた:私は質問(感謝@Tcraft、@DiegoRafaelSouza)のコメントによって助けられた。私は異なるプラットフォームの参照にSystem.Jsonを追加しました(私は共有プロジェクトを使用していますので、project.IOSproject.Android)。 propertiesを右クリックし、Local Copyにチェックを入れてください。次に、別名SystemJsonAliasを追加しました。必要に応じて、すべての.csファイルにusing SystemJsonAlias = System.Jsonを使用してください。

これはおそらく他の人に役立ちます。

1

を。私は単にプロジェクトのリファレンスからSystem.Jsonを削除することができ、プロジェクトをコンパイルして実行することができました。

+0

それは私の選択肢ではありませんでした。私はSystem.Jsonを使う必要があった。私は最終的にそれを手にして、運をたくさん使って、 'SystemJsonAlias = System.Json'を使って動作させました。私は現時点でそれを複製することができない理由を尋ねないでください(あまりにもずっと前に、しかしそれは働くので、私はそれを残す。 – TruffelNL

関連する問題