Framework cible pour Xamarin.Mac

Cet article décrit les frameworks cibles (bibliothèques de classes de base) disponibles pour Xamarin.Mac et les implications de leur utilisation dans votre projet Xamarin.Mac.

Options du framework cible pour Xamarin.Mac

Arrière-plan

Chaque programme ou bibliothèque .NET dépend des fonctionnalités fournies par la bibliothèque de classes de base (BCL). Cette BCL inclut des assemblys tels que mscorlib, System, System.Net.Http et System.Xml qui fournissent les fonctionnalités communes intégrées à tous les langages .NET.

Au fil des ans, plusieurs versions différentes de cette liste de contrôle d’accès ont été développées, optimisées pour différents cas d’usage. La liste BCL « bureau » inclut un ensemble plus riche de bibliothèques qui peuvent être trop lourdes pour d’autres cas d’usage, tandis que le mobile se concentre sur la garantie que les API sont sécurisées pour la liaison, ce qui supprime le code inutilisé pour réduire l’encombrement de l’application.

L’une des répercussions les plus importantes de ces différents frameworks cibles est que tous les assemblys d’un programme donné doivent cibler des assemblys BCL compatibles. Si ce n’était pas le cas, vous pourriez avoir deux assemblys liés à différentes versions du System.dll en désaccord sur la signature d’un type donné. Une bibliothèque partagée peut cibler .NET Standard 2, qui est le sous-ensemble commun des infrastructures cibles, ou une infrastructure cible spécifique.

Il existe trois options d’infrastructure cible disponibles pour Xamarin.Mac, chacune avec des avantages et des compromis différents :

  • Moderne (appelé Mobile dans une documentation plus ancienne) : sous-ensemble très similaire à ce qui alimente Xamarin.iOS, hautement paramétré pour les performances et la taille. Cette infrastructure cible étant sécurisée par l’éditeur de liens, ces projets peuvent avoir leur empreinte finale considérablement réduite en supprimant le code inutilisé.

  • Full (appelé XM 4.5 dans une documentation antérieure) : sous-ensemble très similaire à la liste de contrôle BCL « desktop », avec quelques petites suppressions. Étant donné que l’infrastructure cible est presque identique à net45 (et versions ultérieures), elle peut facilement consommer de nombreux nugets qui ne fournissent pas de builds Xamarin.Mac spécifiques ou netstandard2. Toutefois, en raison de l’utilisation de System.Configuration, il est incompatible avec la liaison.

  • Non pris en charge (appelé Système dans l’ancienne documentation) : au lieu de lier à une liste de contrôle de contrôle d’accès fournie par Xamarin.Mac, utilisez le système actuel installé mono. Cela fournit l’ensemble le plus complet d’assemblys, y compris certains connus pour être problématiques (System.Drawing par exemple). Cette option existe uniquement a un « dernier recours » et il est fortement recommandé d’épuiser d’autres options avant de l’utiliser. Comme son nom l’indique, l’utilisation n’est pas prise en charge par les canaux de support officiels.

Configuration de l'infrastructure cible

Pour passer au type d’infrastructure cible pour un projet Xamarin.Mac, procédez comme suit :

  1. Ouvrez le projet Xamarin.Mac dans Visual Studio pour Mac.

  2. Dans l’Explorateur de solutions, double-cliquez sur le fichier projet pour ouvrir la boîte de dialogue Options du projet.

  3. Sous l’onglet Général , sélectionnez le type de framework cible qui répond aux besoins de votre application :

    Utilisation de la fenêtre Options du projet pour choisir une infrastructure cible

  4. Cliquez sur le bouton OK pour enregistrer vos changements.

Vous devez nettoyer , puis reconstruire votre projet Xamarin.Mac après avoir basculé le type de framework cible.

Résumé

Cet article a brièvement abordé les différents types de frameworks cibles (bibliothèques de classes de base) disponibles pour une application Xamarin.Mac et le moment où chaque type d’infrastructure doit être utilisé.