NuGet 用の新しいプラットフォーム固有ライブラリ プロジェクトの作成
iOS や Android などの特定のプラットフォームを対象とするマルチプラットフォーム ライブラリ プロジェクトは、共有プロジェクトで最適に機能します。
NuGet には、iOS と Android 固有のコードの両方と、両方に共通する .NET コードを含めることができます。
複数のアセンブリが作成され、単一の NuGet パッケージに組み込まれます。 NuGet 標準は、Xamarin.iOS や Android プロジェクトなど、サポートされているすべてのプロジェクト タイプにパッケージを追加できることを保証します。
クロスプラットフォーム ライブラリ NuGet を作成する手順
[ファイル] > [新規ソリューション] を選択します (または、既存のソリューションを右クリックして [追加] > [新規プロジェクト] を選択します)。
以下のように [マルチプラットフォーム] > [ライブラリ] から [マルチプラットフォーム ライブラリ] を選択します。
以下のように [名前] と [説明] を入力し、[プラットフォーム固有] を選択します。
ウィザードの完了。 以下のプロジェクトがソリューションに追加されます。
- Android プロジェクト – このプロジェクトには Android 固有コードを必要に応じて追加できます。
- iOS プロジェクト – このプロジェクトには iOS 固有コードを必要に応じて追加できます。
- NuGet プロジェクト – このプロジェクトにコードは追加されません。 これは他のプロジェクトを参照し、NuGet パッケージ出力のためのメタデータ構成を含みます。
- 共有プロジェクト –
#if
コンパイラ ディレクティブ内のプラットフォーム固有コードを含め、共通コードはこのプロジェクトに追加する必要があります。
以下のように NuGet プロジェクトを右クリックし [オプション] を選択した後、[NuGet パッケージ] > [メタデータ] セクションを開き、必要なメタデータ (およびオプションのメタデータ) を入力します。
また、以下のように [プロジェクト オプション] ウィンドウで、[参照アセンブリ] セクションを開き、共有ライブラリが "bait and switch" を介してどの PCL プロファイルをサポートするかを選択します。
Note
"bait and switch" とは、PCL アセンブリがライブラリによって公開された API のみを含むようになることを意味します (プラットフォーム固有コードを含むことはできません)。 NuGet が Xamarin プロジェクトに追加されると、共有ライブラリは PCL に対してコンパイルされますが、プラットフォーム固有アセンブリには、iOS または Android プロジェクトで実際に使用されるコードが含まれます。
プロジェクトを右クリックし、[NuGet パッケージの作成] を選択する (またはソリューションのビルドかデプロイを行う) と、.nupkg NuGet パッケージ ファイルが (構成に応じてデバッグまたはリリースのどちらかの) /bin/ フォルダーに保存されます。
出力の確認
NuGet パッケージは ZIP ファイルでもあるため、生成されたパッケージの内部構造を調べることができます。
次のスクリーンショットは、iOS と Android をサポートし、2 つの参照アセンブリが選択されたプラットフォーム固有 NuGet の内容を示しています。