Azure Mobile Service は Nuget版とXamarin Components版があるので注意

半日ほど嵌ったのでメモ書き。

Azure Mobile Services を扱うときにはライブラリを使うのが常なのですが、Microsoft.WindowsAzure.MobileServices は Nuget版と Xamarin Componets 版の2種類があります。

Azure ポータルの「Xamarin」でダウンロードするサンプルは Xamarin Componets 版

image

Windows ストアサンプルは Nuget版

image

Nugetでダウンロードできるのは当然 Nuget 版。

image

ソリューションエクスプローラーで「Componets」→「Edit Components」で拾えるのが Xamarin Components 版

image

image

こんな感じでその他のコンポーネントもダウンロードできる。

image

で、普段はどちらかしかダウンロードしないので、はまることはあまりないのですが、こんな風に Mobile Services を PCL 化して、iOS/Android/Windowsストアで共有しようとしたときに、PCL では Nuget版しかダウンロードできない。けれども、iOS/Android のほうで、Xamarin Componets 版をインストールすると、実行時にエラーがでます。変だなー、ってことに。

image

Xamarin Componets 版では、こんな感じに。

image

サンプルコードもどちらを使っているのか判別しづらいのですが、「CurrentPlatform.Init();」を使っている場合が Xamarin Componets版、使っていないのが Nuget版です。Nuget版には CurrentPlatform というクラスがありません。そのほか実装されているクラスは同じなのか?

追記 2014/04/17
いや、どちらも同じく CurrentPlatform.Init() はある。なので、区別がつかないかも。

Xamarin で Windows Azure モバイルサービスを使う(その1) – Qiita
http://qiita.com/amay077/items/40bd5918284fd40d0edc

MobileServiceClient がメインクラスですが、これを使う前に CurrentPlatform.Init() が必要です(DI だか IoC だかですかね)。

かも。

追記 2014/04/17 どちらもソースコードは https://github.com/Azure/azure-mobile-services になってる。

Nuget 版で作ったものは、こちら。

moonmile/XamarinAzureMobile · GitHub
https://github.com/moonmile/XamarinAzureMobile

ところで、アプリケーションキーって、サンプルをダウンロードしてみるしかないんですかね? Azure ポータルに見当たらない…と思ったけど、「モバイルサービス」→「キーの管理」で見れる。

カテゴリー: Xamarin パーマリンク