Vue d’ensemble du code de partage

Ce document compare les différentes méthodes de partage de code entre des projets multiplateformes : .NET Standard, Projets partagés et Bibliothèques de classes portables, y compris les avantages et les inconvénients de chacun d’eux.

Il existe trois méthodes pour partager du code entre des applications multiplateformes :

  • Bibliothèques .NET Standard : les projets .NET Standard peuvent implémenter du code à partager sur plusieurs plateformes et accéder à un grand nombre d’API .NET (selon la version). .NET Standard 1.0 - 1.6 implémentent des ensembles d’API progressivement plus grands, tandis que .NET Standard 2.0 offre la meilleure couverture de la liste de contrôle BCL .NET (y compris les API .NET disponibles dans les applications Xamarin).
  • Projets partagés : utilisez le type de projet d’actif partagé pour organiser votre code source et utilisez #if les directives du compilateur si nécessaire pour gérer les exigences spécifiques de la plateforme.
  • Bibliothèques de classes portables (déconseillées) : les bibliothèques de classes portables (PCL) peuvent cibler plusieurs plateformes avec une surface d’API commune et utiliser des interfaces pour fournir des fonctionnalités spécifiques à la plateforme. Les LCP sont déconseillées dans les dernières versions de Visual Studio . Utilisez .NET Standard à la place.

L’objectif d’une stratégie de partage de code est de prendre en charge l’architecture présentée dans ce diagramme, où un code base unique peut être utilisé par plusieurs plateformes.

Architecture de l’application de code partagé

Cet article compare les méthodes disponibles pour vous aider à choisir le type de projet approprié pour vos applications.

Bibliothèques .NET Standard

Les bibliothèques .NET Standard fournissent un ensemble bien défini de bibliothèques de classes de base qui peuvent être référencées dans différents types de projets, y compris les projets multiplateformes comme Xamarin.Android et Xamarin.iOS. .NET Standard 2.0 est recommandé pour une compatibilité maximale avec le code .NET Framework existant.

Diagramme .NET

Avantages

  • Vous permet de partager du code entre plusieurs projets.
  • Les opérations de refactorisation mettent toujours à jour toutes les références affectées.
  • Une plus grande surface de la bibliothèque de classes de base (BCL) .NET est disponible que les profils PCL. En particulier, .NET Standard 2.0 a presque la même surface d’API que le .NET Framework et est recommandé pour les nouvelles applications et le portage des PCL existants.

Inconvénients

  • Impossible d’utiliser des directives de compilateur telles que #if __IOS__.

Remarques

.NET Standard est similaire à PCL, mais avec un modèle plus simple pour la prise en charge de la plateforme et un plus grand nombre de classes de la BCL.

Projets partagés

Les projets partagés contiennent des fichiers de code et des ressources qui sont inclus dans tout projet qui les référence. Les projets de partage ne produisent pas de sortie compilée par eux-mêmes.

Cette capture d’écran montre un fichier de solution contenant trois projets d’application (pour Android, iOS et Windows), avec un projet partagé qui contient des fichiers de code source C# courants :

Solution de projet partagé

L’architecture conceptuelle est illustrée dans le diagramme suivant, où chaque projet inclut tous les fichiers sources partagés :

Diagramme de projet partagé

Exemple

Une application multiplateforme qui prend en charge iOS, Android et Windows nécessite un projet d’application pour chaque plateforme. Le code commun se trouve dans le projet partagé.

Un exemple de solution contient les dossiers et projets suivants (les noms de projet ont été choisis pour l’expressivité, vos projets n’ont pas besoin de suivre ces instructions de nommage) :

  • Partagé : projet partagé contenant le code commun à tous les projets.
  • AppAndroid – Projet d’application Xamarin.Android.
  • AppiOS – Projet d’application Xamarin.iOS.
  • AppWindows : projet d’application Windows.

De cette façon, les trois projets d’application partagent le même code source (les fichiers C# dans Shared). Toutes les modifications du code partagé seront partagées entre les trois projets.

Avantages

  • Vous permet de partager du code entre plusieurs projets.
  • Le code partagé peut être ramifié en fonction de la plateforme à l’aide de directives du compilateur (par exemple, à l’aide #if __ANDROID__ de , comme indiqué dans le document Création d’applications multiplateformes ).
  • Les projets d’application peuvent inclure des références spécifiques à la plateforme que le code partagé peut utiliser (par Community.CsharpSqlite.WP7 exemple, dans l’exemple Tasky pour Windows Phone).

Inconvénients

  • Les refactorisations qui affectent le code à l’intérieur des directives du compilateur « inactives » ne mettent pas à jour le code à l’intérieur de ces directives.
  • Contrairement à la plupart des autres types de projet, un projet partagé n’a pas d’assembly de « sortie ». Pendant la compilation, les fichiers sont traités dans le cadre du projet de référencement et compilés dans cet assembly. Si vous souhaitez partager votre code en tant qu’assembly, les bibliothèques de classes .NET Standard ou Portable sont une meilleure solution.

Remarques

Une bonne solution pour les développeurs d’applications qui écrivent du code destiné uniquement au partage dans leur application (et non à la distribution à d’autres développeurs).

Bibliothèques de classes portables

Conseil

Les bibliothèques .NET Standard 2.0 sont recommandées par rapport aux bibliothèques de classes portables.

Les bibliothèques de classes portables sont décrites en détail ici.

Diagramme de bibliothèque de classes portable

Avantages

  • Vous permet de partager du code entre plusieurs projets.
  • Les opérations de refactorisation mettent toujours à jour toutes les références affectées.

Inconvénients

  • Déconseillées dans les dernières versions de Visual Studio, les bibliothèques .NET Standard sont recommandées à la place. Reportez-vous à cette explication des différences entre PCL et .NET Standard.
  • Impossible d’utiliser les directives du compilateur.
  • Seul un sous-ensemble du .NET Framework est disponible à utiliser, déterminé par le profil sélectionné (pour plus d’informations, consultez présentation de PCL ).

Remarques

Le modèle PCL est considéré comme déconseillé dans les dernières versions de Visual Studio.

Résumé

La stratégie de partage de code que vous choisissez est pilotée par les plateformes que vous ciblez. Choisissez la méthode qui convient le mieux à votre projet.

.NET Standard est le meilleur choix pour créer des bibliothèques de code partageables (en particulier la publication sur NuGet). Les projets partagés fonctionnent bien pour les développeurs d’applications qui prévoient d’utiliser un grand nombre de fonctionnalités spécifiques à la plateforme dans leurs applications multiplateformes.

Bien que les projets PCL continuent d’être pris en charge dans Visual Studio, .NET Standard est recommandé pour les nouveaux projets.