Ruční vytváření NuGet pro Xamarin

Tato stránka obsahuje několik tipů, které vám pomůžou NuGet balíčků, které cílí na platformu Xamarin.

Poznámka

Xamarin Studio 6.2 (a Visual Studio pro Mac) zahrnuje možnost generovat balíčky NuGet z projektů PCL, .NET Standard nebo sdílených projektů. Další podrobnosti najdete v příručce Multiplatformní knihovny pro sdílení kódu.

NuGet balíčků profilů Xamarin

Článek NuGet, který podporuje více verzí a profilů .NET Framework, popisuje, jak podporovat různá rozhraní a profily Microsoftu, ale nezahrnuje názvy cílových architektur používaných Xamarinem.

Hlavní cílové architektury Xamarinu, které se dnes používají, jsou:

  • MonoAndroid – Xamarin.Android
  • Xamarin.iOS – Xamarin.iOS Unified API (podporuje 64bitovou verzi)
  • Xamarin.Mac – mobilní profil Xamarin.Mac, který je ekvivalentní ploše rozhraní API Xamarin.iOS a Xamarin.Android.

Existuje také cíl pro starší verze iOSu Classic API:

  • MonoTouch – iOS Classic API

Soubor .nuspec , který cílí na všechny tyto objekty, by vypadal nějak takto:

<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>

Výše uvedený příklad ignoruje všechny přenosné knihovny tříd.

Většina souborů .nuspec určuje číslo verze cílové architektury, ale je nepovinné, pokud vaše sestavení pracuje se všemi verzemi této cílové architektury. Takže pokud by vaším cílem byla lib\MonoAndroid , znamená to, že funguje s libovolnou verzí Xamarin.Android.

Verzi můžete zadat pomocí sady čísel bez desetinné čárky nebo ji můžete zadat pomocí desetinných míst. Bez desetinné čárky NuGet vezme každé číslo a změní ho na verzi vložením znaku "." mezi jednotlivé číslice.

Ve výše uvedeném příkladu znamená MonoAndroid10 Android 1.0. To znamená, že cílovou architekturou projektu musí být MonoAndroid verze 1.0 nebo vyšší. Verze je zadána v <TargetFrameworkVersion> elementu v souboru projektu.

Pro objasnění:

  • MonoAndroid403 odpovídá Androidu 4.0.3 a novějšímu (rozhraní API úrovně 15)
  • Xamarin.iOS10 odpovídá Xamarin.iOS 1.0 a novějším
  • Xamarin.iOS1.0 také odpovídá Xamarin.iOS 1.0 a novějším.

NuGety PCL se závislostmi platformy

Profily PCL jsou omezené v tom, k jakým rozhraním API rozhraní .NET Framework mají přístup, a rozhodně nemají přístup ke kódu specifickému pro platformu. Tyto odkazy třetích stran popisují různé přístupy k vytváření balíčků NuGet, které používají PCL a nativní rozhraní API k zajištění kompatibility pro Xamarin a další platformy:

Užitečným odkazem je také tento externí seznam profilů PCL s NuGet názvem cíle.

Příklady

Některé open source příklady, na které můžete odkazovat:

  • ModernHttpClient – napište svou aplikaci pomocí System.Net.Http, ale zahodte tuto knihovnu do a bude výrazně rychlejší (zobrazit zdroj).
  • Splat – knihovna, která umožňuje provádět změny mezi platformami, které by měly být (zobrazit zdroj).
  • NGraphics – knihovna pro více platforem pro vykreslování vektorové grafiky v .NET (zdroj zobrazení).