Création manuelle de packages NuGet pour Xamarin
Cette page contient quelques conseils pour vous aider à créer des packages NuGet qui ciblent la plateforme Xamarin.
Remarque
Xamarin Studio 6.2 (et Visual Studio pour Mac) inclut la possibilité de générer automatiquement des packages NuGet à partir de PCL, de .NET Standard ou de projets partagés. Pour plus d’informations, consultez le guide des bibliothèques multiplateformes pour le partage de code.
Profils Xamarin du package NuGet
Le site web NuGet prenant en charge plusieurs versions et profils .NET Framework explique comment prendre en charge différents frameworks et profils Microsoft, mais n’inclut pas les noms de framework cible utilisés par Xamarin.
Les principales infrastructures cibles Xamarin utilisées aujourd’hui sont les suivantes :
- MonoAndroid - Xamarin.Android
- Xamarin.iOS - API unifiée Xamarin.iOS (prend en charge 64 bits)
- Xamarin.Mac - Profil mobile de Xamarin.Mac, qui équivaut à la surface de l’API Xamarin.iOS et Xamarin.Android.
Il existe également une cible pour l’ancienne API classique iOS :
- MonoTouch - API classique iOS
Un fichier .nuspec qui ciblait tous ces éléments ressemblerait à ceci :
<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>
Les bibliothèques de classes portables ci-dessus sont ignorées.
La plupart des fichiers .nuspec spécifient le numéro de version du framework cible, mais il est facultatif si votre assembly fonctionne avec toutes les versions de ce framework cible. Par conséquent, si votre cible était lib\MonoAndroid , cela signifierait qu’elle fonctionne avec n’importe quelle version de Xamarin.Android.
Vous pouvez spécifier la version avec un ensemble de nombres sans décimale ou vous pouvez la spécifier à l’aide de décimales. Sans le point décimal NuGet, il suffit de prendre chaque nombre et de le transformer en version en insérant un « . » entre chaque chiffre.
Dans le précédent « MonoAndroid10 » signifie « Android 1.0 ». Cela signifie simplement que le framework cible du projet doit être MonoAndroid version 1.0 ou ultérieure. La version est spécifiée dans l’élément <TargetFrameworkVersion>
du fichier projet.
Quelques précisions :
- MonoAndroid403 correspond à Android 4.0.3 et versions ultérieures (par exemple, niveau d’API 15)
- Xamarin.iOS10 correspond à Xamarin.iOS 1.0 et versions ultérieures
- Xamarin.iOS1.0 correspond également à Xamarin.iOS 1.0 et versions ultérieures
NuGets PCL avec dépendances de plateforme
Les profils PCL sont limités dans les API .NET Framework auxquels ils peuvent accéder, et ils ne peuvent certainement pas accéder au code spécifique à la plateforme. Ces liens tiers décrivent différentes approches de création de packages NuGet qui utilisent des API PCL et natives pour assurer la compatibilité pour Xamarin et d’autres plateformes :
- Comment rendre les bibliothèques de classes portables fonctionnent pour vous
- Création d’une bibliothèque PCL NuGet qui fonctionne avec Xamarin.iOS
Cette liste externe de profils PCL avec son nom cible NuGet est également une référence utile.
Exemples
Voici quelques exemples open source auxquels vous pouvez faire référence :
- ModernHttpClient : écrivez votre application à l’aide de System.Net.Http, mais supprimez cette bibliothèque et elle sera considérablement plus rapide (afficher la source).
- Splat : bibliothèque pour créer des éléments multiplateformes qui doivent être (afficher la source).
- NGraphics - Bibliothèque multiplateforme pour le rendu de graphiques vectoriels sur .NET (source d’affichage).