问题
I updated to latest version of Xamarin, where PCL is "fully supported". How can i use Azure Mobile Services now?
if i create PCL lib and trying to add it with NuGet it failed to install "Newtonsoft.Json 5.0.8" because it needs "portable-net45+wp80+MonoAndroid10+MonoTouch10" which is missing.
if i create simple android lib and add Azure from components it's generate excepton:
System.InvalidOperationException: A Windows Azure Mobile Services assembly for the current platform was not found. Ensure that the cur…
on
public static MobileServiceClient MobileService = new MobileServiceClient(
"https://no-link-here.azure-mobile.net/",
"no-key-here");
回答1:
First, make sure you are using version 1.1.5 or above of either the NuGet or the Xamarin Component as previous versions had some issues with PCL support.
For a step by step guide on using Mobile Services in a PCL, see this tutorial.
If you install the Xamarin Component or the NuGet package for Azure Mobile Services into your Android application, you will find it adds these references (among others):
- Microsoft.WindowsAzure.Mobile.dll
- Microsoft.WindowsAzure.Mobile.Ext.dll
The first assembly is a PCL, the second assembly has platform specific implementation (and that is what you are missing with the error message above).
The NuGet package for Mobile Services has specific platform targets defined for Xamarin.iOS and Xamarin.Android so if you are using Visual Studio, you have the option to use just the NuGet and skip the Xamarin component completely.
Due to some bugs in how the BCL NuGet packages (HttpClient, Bcl.Build, etc) interact with Xamarin, there are a few workarounds you'll need to be aware of. See the tutorial above for the necessary steps.
回答2:
Make sure you have called
CurrentPlatform.Init();
before instantiating the mobile service client
回答3:
Here's how I got Mobile Services v1.3.2 working in new Xamarin.Forms PCL project:
- Install 'Mobile Services’ into shared project ‘Packages’ folder as well as .iOS & .Droid ‘Packages' folders.
- Delete duplicate references in .iOS / .Droid folders: “System.Runtime”, “System.IO”, “System.Threading.Tasks"
- Remember to add
CurrentPlatform.Init();
to ‘AppDelegate.cs' in .iOS project and to ‘MainActivity.cs' in .Droid project.
Paul Batum has done a good sample Xamarin PCL app showing syncing between iOS and Android app: https://github.com/paulbatum/fieldengineerlite
回答4:
Make sure you've installed the latest version of NuGet. That should fix the issue where Newtonsoft.Json won't install in the PCL.
For Azure Mobile Services, if you still have trouble I'd recommend following the steps in the getting started guide to download a preconfigured sample project.
来源:https://stackoverflow.com/questions/20226332/how-should-i-use-azure-mobile-services-with-pcl-or-without-it-now