.NET Core ou .NET Standard : que choisir pour une bibliothèque ? Guide complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : Le labyrinthe des bibliothèques .NET

\n\n

Si vous avez déjà créé un nouveau projet dans Visual Studio ou Rider, vous avez sûrement vu deux modèles similaires mais déroutants : Class Library (.NET Core) et Class Library (.NET Standard). Une question légitime se pose : « Quelle est la différence ? Et que dois-je choisir pour ne pas avoir à tout réécrire plus tard ? ».

\n\n

Ce n'est pas qu'un intérêt académique. Sur Stack Overflow, cette question a rassemblé des milliers de vues, et la confusion entre ces deux types de projets est l'une des erreurs les plus fréquentes chez les débutants. Dans cet article, nous allons une fois pour toutes clarifier ce dilemme, examiner des exemples concrets de code en C# et déterminer quel type de bibliothèque convient à votre tâche.

\n\n

1. Bref historique : de .NET Framework à l'ère de l'unification

\n\n

Pour comprendre la différence, il faut se rappeler comment la plateforme a évolué. Avant, il n'y avait que .NET Framework — un environnement monolithique pour Windows. Puis est arrivé .NET Core — une version multiplateforme et légère. Et là, un problème s'est posé : comment écrire une bibliothèque qui fonctionnerait sur les deux ? Pour cela, .NET Standard a été créé — une spécification formelle des API garanties dans toutes les implémentations de .NET.

\n\n

Cependant, avec la sortie de .NET 5 (et ensuite .NET 6, 7, 8), Microsoft a unifié les plateformes. Il existe désormais une classe de base unique — .NET (anciennement .NET Core). Cela a considérablement changé la donne. Voyons ce que cela signifie pour nous, développeurs.

\n\n

2. Qu'est-ce que Class Library (.NET Standard) ?

\n\n

.NET Standard n'est pas un runtime, mais un ensemble de contrats. Imaginez-le comme un « adaptateur universel ». Si vous créez une bibliothèque ciblant netstandard2.0, elle pourra fonctionner :

\n
    \n
  • Dans .NET Framework 4.6.1+
  • \n
  • Dans .NET Core 2.0+
  • \n
  • Dans .NET 5/6/7/8
  • \n
  • Dans Xamarin, Mono, Unity et même UWP
  • \n
\n\n

C'est le choix idéal si vous avez besoin d'une couverture maximale des plateformes. Vous écrivez le code une fois — et il fonctionne partout où cette version de la norme est prise en charge.

\n\n

Exemple de code pour une bibliothèque .NET Standard

\n\n

Créons une bibliothèque simple pour travailler avec des chaînes de caractères, ciblant netstandard2.0 :

\n\n
// StringHelper.cs\nusing System;\nusing System.Text.RegularExpressions;\n\nnamespace MyStandardLibrary\n{\n    public class StringHelper\n    {\n        /// <summary>\n        /// Supprime toutes les balises HTML d'une chaîne.\n        /// </summary>\n        public static string StripHtmlTags(string input)\n        {\n            if (string.IsNullOrEmpty(input))\n                return string.Empty;\n\n            // Regex simple mais efficace pour supprimer les balises\n            return Regex.Replace(input, "<.*?>", string.Empty);\n        }\n\n        /// <summary>\n        /// Inverse une chaîne de caractères.\n        /// </summary>\n        public static string ReverseString(string input)\n        {\n            if (string.IsNullOrEmpty(input))\n                return string.Empty;\n\n            char[] chars = input.ToCharArray();\n            Array.Reverse(chars);\n            return new string(chars);\n        }\n    }\n}
\n\n

Remarquez : nous utilisons uniquement des classes de base (System, System.Text.RegularExpressions), qui sont garanties dans toutes les implémentations de .NET Standard 2.0. Cette bibliothèque fonctionnera même dans un projet .NET Framework 4.6.1, que Microsoft ne développe plus mais qui est encore utilisé dans le secteur corporatif.

\n\n

3. Qu'est-ce que Class Library (.NET Core / .NET) ?

\n\n

Lorsque vous choisissez .NET Core Class Library (ou simplement .NET Class Library, si vous avez .NET 5+), vous vous liez à une implémentation spécifique de la plateforme. Dans le fichier projet (csproj), vous verrez quelque chose comme <Target

Blogs

Book Recommendations