我应该如何使用Azure移动服务与PCL或现在没有它?

时间:2013-11-26 19:35:22

标签: azure xamarin portable-class-library

我更新到最新版本的Xamarin,其中PCL是“完全支持”的。 我现在如何使用Azure移动服务?

如果我创建PCL lib并尝试使用NuGet添加它,则无法安装“Newtonsoft.Json 5.0.8”,因为它需要“portable-net45 + wp80 + MonoAndroid10 + MonoTouch10”,这是缺失的。

如果我创建简单的android lib并从组件中添加Azure,则生成除了:

  

System.InvalidOperationException:Windows Azure移动服务   找不到当前平台的程序集。确保cur ...

on

 public static MobileServiceClient MobileService = new MobileServiceClient(
    "https://no-link-here.azure-mobile.net/",
    "no-key-here");    

4 个答案:

答案 0 :(得分:6)

首先,请确保您使用的是NuGet或Xamarin组件的1.1.5或更高版本,因为之前的版本在PCL支持方面存在一些问题。

有关在PCL中使用移动服务的分步指南,请参阅this tutorial

如果您将Azure移动服务的Xamarin ComponentNuGet package安装到Android应用程序中,您会发现它添加了这些引用(以及其他内容):

  • Microsoft.WindowsAzure.Mobile.dll
  • Microsoft.WindowsAzure.Mobile.Ext.dll

第一个程序集是PCL,第二个程序集具有特定于平台的实现(这就是上面的错误消息所缺少的内容)。

针对移动服务的NuGet包具有为Xamarin.iOS和Xamarin.Android定义的特定平台目标,因此如果您使用的是Visual Studio,则可以选择仅使用NuGet并完全跳过Xamarin组件。

由于BCL NuGet包(HttpClient,Bcl.Build等)与Xamarin的交互方式存在一些缺陷,因此您需要了解一些解决方法。请参阅上面的教程以了解必要的步骤。

答案 1 :(得分:6)

确保已拨打

CurrentPlatform.Init(); 

在实例化移动服务客户端之前

答案 2 :(得分:4)

以下是我在新的Xamarin.Forms PCL项目中使用Mobile Services v1.3.2的方法:

  1. 将“移动服务”安装到共享项目“包”文件夹中 以及.iOS& .Droid'包'文件夹。
  2. 删除.iOS / .Droid文件夹中的重复引用: “System.Runtime”,“System.IO”,“System.Threading.Tasks”
  3. 请记住在.iOS中将CurrentPlatform.Init();添加到“AppDelegate.cs” 项目和.Droid项目中的“MainActivity.cs”。
  4. Paul Batum做了一个很好的示例Xamarin PCL应用程序,显示iOS和Android应用程序之间的同步:https://github.com/paulbatum/fieldengineerlite

答案 3 :(得分:1)

确保您已安装the latest version of NuGet。这应该可以解决Newtonsoft.Json无法在PCL中安装的问题。

对于Azure移动服务,如果您仍然遇到问题,我建议您按照getting started guide中的步骤下载预配置的示例项目。