Ruční vytváření balíčků NuGet pro Xamarin
Tato stránka obsahuje několik tipů, které vám pomůžou sestavovat balíčky NuGet, které cílí na platformu Xamarin.
Poznámka:
Xamarin Studio 6.2 (a Visual Studio pro Mac) zahrnuje možnost automaticky generovat balíčky NuGet z PCL, .NET Standard nebo sdílených projektů. Další podrobnosti najdete v průvodci sdílením kódu v multiplatformových knihovnách.
Profily Xamarin balíčku NuGet
Web NuGet podporuje více verzí a profilů rozhraní .NET Framework popisuje, jak podporovat různé architektury 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 – Sjednocené rozhraní API Xamarin.iOS (podporuje 64bitovou verzi)
- Xamarin.Mac – mobilní profil Xamarin.Mac, který odpovídá rozhraní API Xamarin.iOS a Xamarin.Android.
Existuje také cíl pro starší klasické rozhraní API pro iOS:
- MonoTouch – klasické rozhraní API pro iOS
Soubor .nuspec , který cílí na všechny tyto 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é hodnoty ignorují všechny přenosné knihovny tříd.
Většina souborů .nuspec určuje číslo verze cílové architektury, ale je volitelné, pokud sestavení funguje se všemi verzemi této cílové architektury. Takže pokud byl váš cíl lib\MonoAndroid to by znamenalo, že funguje s libovolnou verzí Xamarin.Android.
Můžete zadat verzi se sadou čísel bez desetinné čárky nebo ji můžete zadat pomocí desetinných míst. Bez desetinné čárky NuGet jednoduše vezme každé číslo a převede ho na verzi vložením znaku "." mezi každou číslici.
Ve výše uvedeném "MonoAndroid10" znamená "Android 1.0". To znamená, že cílová architektura projektu musí být MonoAndroid verze 1.0 nebo vyšší. Verze je určena v <TargetFrameworkVersion>
elementu v souboru projektu.
Vysvětlení:
- MonoAndroid403 odpovídá Androidu 4.0.3 a novějšímu (ie 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 platforem
Profily PCL jsou omezené na to, k jakým rozhraním API rozhraní .NET Framework mají přístup, a určitě nemají přístup k kódu specifickému pro platformu. Tyto odkazy třetích stran diskutují o různých přístupech k vytváření balíčků NuGet, které používají rozhraní PCL a nativní rozhraní API k zajištění kompatibility pro Xamarin a další platformy:
- Jak zajistit, aby přenosné knihovny tříd fungovaly za vás
- Vytvoření knihovny PCL NuGet, která funguje s Xamarin.iOS
Tento externí seznam profilů PCL s jejich cílovým názvem NuGet je také užitečným odkazem.
Příklady
Některé opensourcové příklady, na které můžete odkazovat:
- ModernHttpClient – Napište aplikaci pomocí System.Net.Http, ale tuto knihovnu zahoďte a bude výrazně rychlejší (zdroj zobrazení).
- Splat – knihovna pro různé platformy, která by měla být (zdroj zobrazení).
- NGraphics – knihovna pro různé platformy pro vykreslování vektorové grafiky v .NET (zdroj zobrazení).