次の方法で共有


Xamarin の NuGet パッケージを手動で作成する

このページには、Xamarin プラットフォームを対象とする NuGet パッケージのビルドに役立つヒントが含まれています。

Note

Xamarin Studio 6.2 (および Visual Studio for Mac) には、PCL、.NET Standard、または共有プロジェクトから NuGet パッケージを自動的に生成する機能が含まれています。 詳細については、「 コード共有 用のマルチプラットフォーム ライブラリ」ガイドを参照してください。

NuGet パッケージ Xamarin プロファイル

NuGet Web サイトの複数の .NET Framework のバージョンとプロファイル のサポートでは、さまざまな Microsoft フレームワークとプロファイルをサポートする方法について説明していますが、Xamarin で使用されるターゲット フレームワーク名は含まれません。

現在使用されている Xamarin ターゲット フレームワークメインは次のとおりです。

  • MonoAndroid - Xamarin.Android
  • Xamarin.iOS - Xamarin.iOS Unified API (64 ビットをサポート)
  • Xamarin.Mac - Xamarin.Mac のモバイル プロファイル。Xamarin.iOS および Xamarin.Android API サーフェスと同等です。

古い iOS クラシック API のターゲットもあります。

  • MonoTouch - iOS クラシック API

これらすべてを対象とした .nuspec ファイルは、次のようになります。

<files>
    <file src="Mac\bin\Release\*.dll" target="lib\Xamarin.Mac20" />
    <file src="iOS\bin\Release\*.dll" target="lib\Xamarin.iOS10" />
    <file src="Android\bin\Release\*.dll" target="lib\MonoAndroid10" />
    <file src="iOSClassic\bin\Release\*.dll" target="lib\MonoTouch10" />
</files>

上記では、ポータブル クラス ライブラリはすべて無視されます。

ほとんどの .nuspec ファイルはターゲット フレームワークのバージョン番号を指定しますが、アセンブリがそのターゲット フレームワークのすべてのバージョンで動作する場合は省略可能です。 したがって、ターゲットが lib\MonoAndroid場合、これは Xamarin.Android の任意のバージョンで動作することを意味します。

小数点のない数値のセットでバージョンを指定することも、小数点を使用して指定することもできます。 小数点がない場合、NuGet は各数字を受け取り、各数字の間に '.' を挿入してバージョンに変換します。

上記の "MonoAndroid10" は "Android 1.0" を意味します。 つまり、プロジェクトの ターゲット フレームワーク は MonoAndroid バージョン 1.0 以降である必要があります。 バージョンは、プロジェクト ファイル内の <TargetFrameworkVersion> 要素で指定されます。

解説:

  • MonoAndroid403 は Android 4.0.3 以降と一致します (つまり、API レベル 15)
  • Xamarin.iOS10 が Xamarin.iOS 1.0 以降と一致する
  • Xamarin.iOS1.0 も Xamarin.iOS 1.0 以降と一致します

プラットフォームの依存関係を持つ PCL NuGet

PCL プロファイルは、アクセスできる .NET Framework API では制限されており、プラットフォーム固有のコードには確実にアクセスできません。 これらのサード パーティのリンクでは、PCL とネイティブ API を使用して Xamarin やその他のプラットフォームの互換性を提供する NuGet パッケージを作成するためのさまざまな方法について説明します。

NuGet ターゲット名を持つ PCL プロファイルのこの外部リストも役立つリファレンスです。

参照できるオープンソースの例を次に示します。

  • ModernHttpClient – System.Net.Http を使用してアプリを作成しますが、このライブラリをドロップすると、大幅に高速化されます (ソースの表示)。
  • Splat – 必要なクロスプラットフォームを作成するためのライブラリ (ソースの表示)。
  • NGraphics - .NET (ビュー ソース) でベクター グラフィックスをレンダリングするためのクロス プラットフォーム ライブラリ。