Как я должен использовать Azure Mobile Services с PCL или без него сейчас?

Я обновил до последней версии Xamarin, где PCL "полностью поддерживается". Как я могу использовать Azure Mobile Services сейчас?

если я создаю PCL lib и пытаюсь добавить его с NuGet, ему не удалось установить "Newtonsoft.Json 5.0.8", потому что ему не нужен "portable-net45 + wp80 + MonoAndroid10 + MonoTouch10".

если я создаю простой андроид lib и добавляю Azure из компонентов, которые он генерирует excepton:

System.InvalidOperationException: службы Windows Azure для мобильных устройств сборка для текущей платформы не найдена. Убедитесь, что кур...

on

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

Ответ 1

Во-первых, убедитесь, что используете версию 1.1.5 или выше либо NuGet, либо компонент Xamarin, поскольку предыдущие версии имели некоторые проблемы с поддержкой PCL.

Для пошагового руководства по использованию мобильных служб в PCL см. этот учебник.

Если вы установите компонент Xamarin или пакет NuGet для Azure Mobile Services в ваше приложение для 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, есть несколько обходных решений, о которых вам нужно знать. Для получения необходимых шагов см. Руководство.

Ответ 2

Убедитесь, что вы вызывали

CurrentPlatform.Init(); 

перед созданием экземпляра клиента службы мобильной связи

Ответ 3

Вот как я получил Mobile Services v1.3.2, работая над новым проектом Xamarin.Forms PCL:

  • Установите папку "Мобильные службы в общий проект" Пакеты как а также папки .iOS и .Droid 'Packages'.
  • Удалить дубликаты ссылок в папках .iOS/.Droid: "System.Runtime", "System.IO", "System.Threading.Tasks"
  • Не забудьте добавить CurrentPlatform.Init(); в 'AppDelegate.cs' в .iOS проект и "MainActivity.cs" в проекте .Droid.

Пол Батум сделал хороший пример приложения Xamarin PCL, показывающего синхронизацию между iOS и Android-приложением: https://github.com/paulbatum/fieldengineerlite

Ответ 4

Убедитесь, что вы установили последнюю версию NuGet. Это должно решить проблему, когда Newtonsoft.Json не будет устанавливать в PCL.

Для Azure Mobile Services, если у вас все еще есть проблемы, я бы рекомендовал выполнить следующие шаги в руководстве по началу работы для загрузки предварительно сконфигурированного образца проекта.