2014-12-30 16 views
6

próbuję wykorzystywać klientów ServiceStack nad projektem Xamarin iOS i podczas debugowania go mam następujący wyjątek:ServiceStack klient nad projektem Xamarin.iOS

“System.ArgumentException: PclExport.Instance needs to be initialized”.

Kod, który wywołuje wyjątek jest następujący :

try 
    { 

     string strReadParam = this.xmlParser.GetString("SyncUrl"); 
     CommonStatic.SyncWSUrl = strReadParam; 

     var client = new JsonServiceClient(CommonStatic.SyncWSUrl); 
     client.Timeout = new TimeSpan(0, 0, 0, 5, 0); 
     var response = client.Get(new mSalesCheckConnectionRequest { DBSource = CommonStatic.DBSource, DBSourceInstance = CommonStatic.DBSourceInstance, DBName = CommonStatic.DBName, DBUsername = CommonStatic.DBUsername, DBPassword = CommonStatic.DBPassword }); 

     return; 

    } 
    catch (System.Net.WebException wex) 
    { 
    } 

Używam ServiceStack.Interfaces, ServiceStack.Client.Pcl i ServiceStack.Text.Pcl wszyscy mający wersji 4.0.34. Dodatkowo odwołałem się do Newtonsoft.Json w wersji 6.0.7.

Po kilku badaniach zdałem sobie sprawę, że dostawca PCL dla iOS nie jest automatycznie rejestrowany, dlatego dodałem "IosPclExportClient.Configure();" przed utworzeniem nowego klienta usługi Json i odwołałem się do ServiceStack.Pcl.iOS.dll na wersja 4.0.0.0.

Wynik jest następujący błąd: „nie może obejmować zarówno«monotouch.dll»oraz«»Xamarin.iOS.dll w projekcie same Xamarin.iOS -«Xamarin.iOS.dll»odwołuje się wyraźnie, gdy" monotouch.dll "jest oznaczony przez" ServiceStack.Pcl.iOS, wersja = 4.0.0.0, Culture = neutral, PublicKeyToken = null "."

Czy są jakieś sugestie rozwiązania tego problemu?

góry dziękuję

Odpowiedz

7

Trzeba zadzwonić IosPclExportClient.Configure(); kiedy aplikacja zacznie zainicjowania PCL Export klienta przed użyciem w aplikacji iOS.

Więc w swojej metodzie Main:

static void Main (string[] args) 
{ 
    // Configure ServiceStack Client 
    IosPclExportClient.Configure(); 

    // Set AppDelegate 
    UIApplication.Main (args, null, "AppDelegate"); 
} 

and a I referenced ServiceStack.Pcl.iOS.dll at version 4.0.0.0.

PCL specyficzne pakiety Nuget z ServiceStack nie są utrzymywane, tak jak zostały one włączone do głównego pakietu Nuget używając specyficznego profilu.

Należy tylko należy dołączyć pakiet ServiceStack.Client do projektu. Usuń więc wszystkie odwołania do ServiceStack w projekcie, wyczyść kompilację i dodaj tylko ServiceStack.Client.

Jeśli odwołasz się do ServiceStack.Client.Pcl, a także ServiceStack.Client, pojawi się konflikt.

+0

Dziękuję za odpowiedź. Dołączyłem ServiceStack.Client wpisując "Install-Package ServiceStack.Client" w konsoli menedżera pakietów. Dodatkowo pobrałem plik ServiceStack.Client.Pcl.dll i umieściłem go jako odniesienie. Niestety komunikat o błędzie pozostaje ten sam. – George

+0

@George Punkt, który robiłem, NIE WOLNO pobierać i dołączać "ServiceStack.Client.Pcl.dll". TYLKO odwołanie do 'ServiceStack.Client'. 'ServiceStack.Client.Pcl' NIE musi być dołączony, ponieważ będzie kolidował z odniesieniem do' ServiceStack.Client', który zawiera teraz wbudowane wymagania iOS. Więc zapomnij o bibliotece PCL. – Scott

+0

Popełniłem błąd w poleceniu powyżej! Przez pomyłkę napisałem, że pobrałem plik ServiceStack.Client.Pcl.dll, a nie ServiceStack.Pcl.iOS.dll. Przepraszam za to. Tak więc, po zainstalowaniu ServiceStack.Client, mam odwołania do ServiceStack.Client, ServiceStack.Interfaces i ServiceStack.Text. Wreszcie odwołanie do ServiceStack.Pcl.iOS, które jest wymagane w celu użycia "IosPclExportClient.Configure()" – George

Powiązane problemy