Bibliothèque ou application .csproj et gestion sémantique des versions
Comprenez les différences entre .csproj de bibliothèque et d’application, la manière dont NuGet consomme les bibliothèques et le rôle de la gestion sémantique des versions (MAJOR.MINOR.PATCH) dans les livraisons.
Bibliothèque ou application .csproj et gestion sémantique des versions est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 3 leçons au total.
Concepts et objectifs
Objectif : savoir quand créer une bibliothèque plutôt qu’une application, et comprendre comment les versions signalent les changements.
- Fichier .csproj de bibliothèque : conçu pour être référencé et empaqueté pour NuGet
- Fichier .csproj d’application : produit un exécutable pour les utilisateurs finaux
- Gestion sémantique des versions : MAJOR.MINOR.PATCH
Bibliothèque ou application : aperçu rapide
- Bibliothèque : cible des plateformes pour maximiser la réutilisation ; contient des métadonnées (PackageId, Version, Authors).
- Application : possède un point d’entrée ; publie une sortie exécutable.
- NuGet regroupe les bibliothèques dans des fichiers .nupkg ; les applications sont généralement publiées et non empaquetées.
Démonstration de la version de l’assembly
Une bibliothèque expose une version ; les consommateurs la voient lorsqu’ils référencent le paquet.
using System;
using System.Reflection;
// Simple demo: read the assembly version at runtime.
// In a packed library, this reflects the version consumers see.
public class Program
{
public static void Main(string[] args)
{
Version v = Assembly.GetExecutingAssembly().GetName().Version;
Console.WriteLine("Assembly version: " + (v == null ? "unknown" : v.ToString()));
}
}
Comparaison SemVer (bases)
Comparez les versions pour décider des mises à jour : d’abord MAJOR, puis MINOR, puis PATCH.
using System;
// Minimal SemVer (MAJOR.MINOR.PATCH) parsing and comparison.
// Ignores prerelease/build metadata for simplicity (good enough for beginners).
public class SemVer : IComparable<SemVer>
{
public int Major;
public int Minor;
public int Patch;
public static bool TryParse(string s, out SemVer v)
{
v = null;
if (string.IsNullOrEmpty(s)) return false;
string[] parts = s.Split('.');
if (parts.Length < 3) return false;
int a, b, c;
if (!int.TryParse(parts[0], out a)) return false;
if (!int.TryParse(parts[1], out b)) return false;
if (!int.TryParse(parts[2], out c)) return false;
v = new SemVer { Major = a, Minor = b, Patch = c };
return true;
}
public int CompareTo(SemVer other)
{
if (other == null) return 1;
if (Major != other.Major) return Major.CompareTo(other.Major);
if (Minor != other.Minor) return Minor.CompareTo(other.Minor);
return Patch.CompareTo(other.Patch);
}
public override string ToString()
{
return Major + "." + Minor + "." + Patch;
}
}
public class Program
{
public static void Main(string[] args)
{
SemVer a, b;
if (SemVer.TryParse("1.4.2", out a) && SemVer.TryParse("1.5.0", out b))
{
int cmp = a.CompareTo(b);
Console.WriteLine(a + " vs " + b + " -> " + (cmp < 0 ? "older" : (cmp > 0 ? "newer" : "equal")));
}
}
}
Règles d’incrémentation de version
Règles d’incrémentation :
- MAJOR : modifications incompatibles de l’API
- MINOR : nouvelles fonctionnalités compatibles avec les versions précédentes
- PATCH : corrections de bogues ou tâches d’entretien, sans modification de l’API
Conseil : communiquez les changements dans un journal des modifications court.
Liste de vérification avant empaquetage
- Les cibles de la bibliothèque sont définies, par exemple netstandard
- PackageId, Version et Authors sont renseignés
- La licence et le fichier README sont inclus
- L’API publique a été vérifiée pour détecter les ruptures de compatibilité
Règle SemVer
Récapitulatif
Récapitulatif : créez des bibliothèques pour la réutilisation et l’empaquetage NuGet ; les applications sont des exécutables. Utilisez MAJOR.MINOR.PATCH pour communiquer les changements en toute sécurité.
Questions Fréquemment Posées
La leçon « Bibliothèque ou application .csproj et gestion sémantique des versions » est-elle gratuite ?
Oui — le texte complet de « Bibliothèque ou application .csproj et gestion sémantique des versions » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 3 leçons au total.
Qu'est-ce que j'apprendrai dans « Bibliothèque ou application .csproj et gestion sémantique des versions » ?
Comprenez les différences entre .csproj de bibliothèque et d’application, la manière dont NuGet consomme les bibliothèques et le rôle de la gestion sémantique des versions (MAJOR.MINOR.PATCH) dans le… Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C# Academy ?
Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 3.
Combien de temps prend la leçon « Bibliothèque ou application .csproj et gestion sémantique des versions » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?
Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Bibliothèque ou application .csproj et gestion sémantique des versions
- Empaquetage et publication sur NuGet
- Ciblage de plusieurs frameworks