Ręczne tworzenie pakietów NuGet dla platformy Xamarin
Ta strona zawiera kilka wskazówek ułatwiających tworzenie pakietów NuGet przeznaczonych dla platformy Xamarin.
Uwaga
Program Xamarin Studio 6.2 (i Visual Studio dla komputerów Mac) umożliwia automatyczne generowanie pakietów NuGet z projektów PCL, .NET Standard lub Shared Projects. Aby uzyskać więcej informacji, zapoznaj się z przewodnikiem Dotyczącym udostępniania kodu w bibliotekach wieloplatformowych.
Profile platformy Xamarin pakietu NuGet
Witryna internetowa NuGet Obsługa wielu wersji i profilów programu .NET Framework omawia sposób obsługi różnych platform i profilów firmy Microsoft, ale nie zawiera docelowych nazw struktur używanych przez platformę Xamarin.
Główne platformy docelowe platformy Xamarin, które są obecnie używane, to:
- MonoAndroid — Xamarin.Android
- Xamarin.iOS — ujednolicony interfejs API platformy Xamarin.iOS (obsługuje 64-bitowy)
- Xamarin.Mac — profil mobilny platformy Xamarin.Mac, który jest odpowiednikiem powierzchni interfejsu API platform Xamarin.iOS i Xamarin.Android.
Istnieje również element docelowy starszego klasycznego interfejsu API systemu iOS:
- MonoTouch — klasyczny interfejs API systemu iOS
Plik nuspec , który dotyczył wszystkich tych elementów, będzie wyglądać mniej więcej tak:
<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>
Powyższe ignoruje wszystkie przenośne biblioteki klas.
Większość plików nuspec określa numer wersji platformy docelowej, ale jest opcjonalna, jeśli zestaw współpracuje ze wszystkimi wersjami tej platformy docelowej. Więc jeśli elementem docelowym była lib\MonoAndroid , oznaczałoby to, że działa z dowolną wersją platformy Xamarin.Android.
Możesz określić wersję z zestawem liczb bez przecinka dziesiętnego lub określić ją przy użyciu punktów dziesiętnych. Bez przecinka dziesiętnego nuGet zajmie tylko każdą liczbę i przekształci ją w wersję, wstawiając znak "".
W powyższym "MonoAndroid10" oznacza "Android 1.0". Oznacza to, że platforma docelowa projektu musi być monoAndroid w wersji 1.0 lub nowszej. Wersja jest określona w elemecie <TargetFrameworkVersion>
w pliku projektu.
Aby wyjaśnić:
- MonoAndroid403 pasuje do systemu Android 4.0.3 i nowszych (tj. poziom 15 interfejsu API)
- Xamarin.iOS10 jest zgodny z wersją Xamarin.iOS 1.0 i nowszymi
- Xamarin.iOS1.0 jest również zgodny z wersją Xamarin.iOS 1.0 i nowszymi
NuGets PCL z zależnościami platformy
Profile PCL są ograniczone do interfejsów API platformy .NET Framework, do których mogą uzyskiwać dostęp, i z pewnością nie mogą uzyskać dostępu do kodu specyficznego dla platformy. Te linki innych firm omawiają różne podejścia do tworzenia pakietów NuGet korzystających z interfejsów API PCL i natywnych w celu zapewnienia zgodności platformY Xamarin i innych platform:
- Jak sprawić, aby przenośne biblioteki klas działały dla Ciebie
- Tworzenie biblioteki NUGet PCL, która współpracuje z platformą Xamarin.iOS
Ta zewnętrzna lista profilów PCL z nazwą docelową NuGet jest również przydatną dokumentacją.
Przykłady
Niektóre przykłady typu open source, które można odwoływać się do następujących elementów:
- ModernHttpClient — napisz aplikację przy użyciu biblioteki System.Net.Http, ale porzuca tę bibliotekę i będzie znacznie szybsza (wyświetl źródło).
- Splat — biblioteka umożliwiająca tworzenie elementów międzyplatformowych, które powinny mieć wartość (wyświetl źródło).
- NGraphics — wieloplatformowa biblioteka renderowania grafiki wektorowej na platformie .NET (wyświetl źródło).