Partager via


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 :

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 :