0Pricing
C# Academy · Lezione

Libreria e app .csproj, versionamento semantico

Comprendete la differenza tra .csproj di una libreria e di un’app, come NuGet utilizza le librerie e come il versionamento semantico (MAJOR.MINOR.PATCH) guida le release.

Libreria e app .csproj, versionamento semantico è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 1 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 3 lezioni in totale.

Concetti e obiettivi

Obiettivo: sapere quando creare una libreria invece di un'app e come le versioni segnalano le modifiche.

  • File .csproj di una libreria: creato per essere referenziato e incluso in un pacchetto NuGet
  • File .csproj di un'app: produce un eseguibile per gli utenti finali
  • Versionamento semantico: MAJOR.MINOR.PATCH

Libreria vs app: panoramica rapida

  • Libreria: è destinata a più framework per massimizzare il riutilizzo; include metadati (PackageId, Version, Authors).
  • App: ha un punto di ingresso e pubblica un output eseguibile.
  • NuGet include le librerie in file .nupkg; le app vengono generalmente pubblicate, non incluse in pacchetti.

Dimostrazione della versione dell'assembly

Una libreria espone una versione; i consumer la visualizzano quando fanno riferimento al pacchetto.

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()));
  }
}

Confronto SemVer (base)

Confronti le versioni per decidere se eseguire un aggiornamento: prima MAJOR, poi MINOR e infine 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")));
    }
  }
}

Regole per incrementare la versione

Regole per l'incremento:

  • MAJOR: modifiche incompatibili all'API
  • MINOR: nuove funzionalità compatibili con le versioni precedenti
  • PATCH: correzioni di bug o attività di manutenzione, senza modifiche all'API

Suggerimento: comunichi le modifiche in un changelog breve.

Checklist prima del pacchetto

  • Destinazioni della libreria impostate (ad es. netstandard)
  • PackageId, Version e Authors compilati
  • Licenza e README inclusi
  • API pubblica esaminata per individuare modifiche incompatibili

Regola SemVer

Verifica rapida: quale modifica richiede normalmente un incremento della versione MAJOR secondo il versionamento semantico?

Riepilogo

Riepilogo: crei librerie per il riutilizzo e la creazione di pacchetti NuGet; le app sono eseguibili. Usi MAJOR.MINOR.PATCH per comunicare le modifiche in modo sicuro.

Domande Frequenti

La lezione «Libreria e app .csproj, versionamento semantico» è gratuita?

Sì — il testo completo di «Libreria e app .csproj, versionamento semantico» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 3 lezioni in totale.

Cosa imparerò in «Libreria e app .csproj, versionamento semantico»?

Comprendete la differenza tra .csproj di una libreria e di un’app, come NuGet utilizza le librerie e come il versionamento semantico (MAJOR.MINOR.PATCH) guida le release. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C# Academy?

Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 3.

Quanto tempo richiede la lezione «Libreria e app .csproj, versionamento semantico»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C# Academy?

Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Libreria e app .csproj, versionamento semantico
  2. Creazione e pubblicazione su NuGet
  3. Multi-targeting
← Torna a C# Academy