Xamarin.iOS项目上的ServiceStack客户端

Geo*_*rge 6 c# xamarin.ios servicestack

我正在尝试在Xamarin iOS项目上使用ServiceStack客户端,在调试时我有以下异常:

"System.ArgumentException:PclExport.Instance需要初始化".

产生异常的代码如下:

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)
    {
    }
Run Code Online (Sandbox Code Playgroud)

我正在使用ServiceStack.Interfaces,ServiceStack.Client.Pcl和ServiceStack.Text.Pcl都具有版本4.0.34.另外,我在6.0.7版本中引用了Newtonsoft.Json.

经过一些研究,我意识到iOS的PCL提供程序没有自动注册,所以我在实例化新的Json服务客户端和我引用的版本4.0.0.0的ServiceStack.Pcl.iOS.dll之前添加了"IosPclExportClient.Configure();" .

结果是以下错误:"不能同时包含'monotouch.dll'和'Xamarin.iOS.dll'在同一个Xamarin.iOS项目中 - 'Xamarin.iOS.dll'被明确引用,而'monotouch.dll'是由'ServiceStack.Pcl.iOS引用,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = null'."

有什么建议可以解决这个问题吗?

先感谢您

Sco*_*ott 7

IosPclExportClient.Configure();在iOS应用程序中使用之前,您需要在应用程序开始初始化PCL导出客户端时调用.

所以在你的Main方法中:

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

    // Set AppDelegate
    UIApplication.Main (args, null, "AppDelegate");
}
Run Code Online (Sandbox Code Playgroud)

我在版本4.0.0.0引用了ServiceStack.Pcl.iOS.dll.

不再维护ServiceStack的PCL特定NuGet包,因为它们已使用特定配置文件合并到主NuGet包中.

应该只ServiceStack.Client在项目中包含该包.因此,删除项目中对ServiceStack的所有引用,清理构建,然后添加ServiceStack.Client.

如果你引用的ServiceStack.Client.Pcl很好,ServiceStack.Client你就会发生冲突.