web-dev-qa-db-ja.com

Xamarin共有ライブラリとPCL

Xamarin共有プロジェクトとポータブルクラスライブラリの正確な違いは何ですか?

共有ライブラリを使用する場合とポータブルクラスライブラリを使用する場合

これは、アラートの表示、カメラへのアクセスなどの共有プロジェクトでネイティブ機能を記述し、AndroidとiOSの両方で使用できますか?

誰か説明してもらえますか?.

23
PC Parker
  • 共有プロジェクトでは、各コードファイルは宛先(Android、iOS、Windows Phoneなど)ごとにコンパイルされます。 #ifコンパイラ指令を使用して、プラットフォーム固有のコードを含めることができます。カメラにアクセスする場合は、すべての宛先プラットフォームの#ifブロック内にアクセスコードを記述する必要があります。これはコードを台無しにする可能性がありますが、さまざまな実装を見つけるのは簡単です。詳細: http://developer.xamarin.com/guides/cross-platform/application_fundamentals/shared_projects/
  • Protable Class Libraries(PCL)は、必要なすべてのプラットフォームと互換性のある一般的な.NETサブセットに対してコンパイルされます。したがって、System.Net.Httpにはアクセスできますが、プラットフォーム固有のコードにはアクセスできません。 PCLコード内のカメラにアクセスする場合は、依存性注入を介して一般化されたインターフェイスからカメラにアクセスする必要があります。この目標を達成するのに役立つかなり優れたフレームワークがいくつかあります。最も有名なものの1つはMVVMCrosshttps://github.com/MvvmCross/MvvmCross/wiki )です。 PCLの詳細: http://developer.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/sharing_code_options/#Portable_Class_Libraries

コンパイラ指令がなくてもコードがはるかに読みやすいので、私は個人的にPCLを好みます。 MVVMCrossを使用すると、NuGetを介して多くのプラグインを使用できます。したがって、カメラへのアクセスやアラートの表示などのために独自のクラスを作成する必要はありません。

34
Wosi