C# Academy · Lektion

Biblioteks- kontra app-.csproj och semantisk versionshantering

Förstå skillnaden mellan biblioteks- och app-.csproj, hur NuGet använder bibliotek och hur semantisk versionshantering (MAJOR.MINOR.PATCH) vägleder utgåvor.

Lektion 1 av 38 steg

Biblioteks- kontra app-.csproj och semantisk versionshantering är en gratis lektion i C# Academy på CoddyKit. Detta är lektion 1 av 3. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för C# Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i C# Academy innehåller totalt 3 lektioner.

Begrepp och mål

Mål: Förstå när man ska skapa ett bibliotek i stället för en app och hur versionsnummer signalerar förändringar.

  • Bibliotekets .csproj: byggs för att refereras och paketeras för NuGet
  • Appens .csproj: genererar en körbar fil för slutanvändare
  • Semantisk versionshantering: MAJOR.MINOR.PATCH

Bibliotek kontra app: snabböversikt

  • Bibliotek: riktar sig mot ramverk för att maximera återanvändningen och innehåller metadata (PackageId, Version, Authors).
  • App: har en startpunkt och publicerar körbart resultat.
  • NuGet paketerar bibliotek i .nupkg; appar publiceras vanligtvis i stället för att paketeras.

Demo av assembly-version

Ett bibliotek exponerar en version; konsumenter ser den när de refererar till paketet.

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

Jämförelse av SemVer (grunderna)

Jämför versioner för att avgöra uppdateringar: MAJOR först, sedan MINOR och därefter 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")));
    }
  }
}

Regler för versionshöjning

Regler för versionshöjning:

  • MAJOR: inkompatibla API-ändringar
  • MINOR: nya funktioner, bakåtkompatibla
  • PATCH: buggfixar och underhållsarbete utan API-ändringar

Tips: kommunicera ändringar i en kort ändringslogg.

Checklista före paketering

  • Bibliotekets målramverk är angivna (t.ex. netstandard)
  • PackageId, Version och Authors är ifyllda
  • Licens och README ingår
  • Det offentliga API:t har granskats med avseende på inkompatibla ändringar

SemVer-regel

Snabb kontroll: Vilken ändring kräver normalt en MAJOR-versionshöjning enligt semantisk versionshantering?

Sammanfattning

Sammanfattning: Bygg bibliotek för återanvändning och NuGet-paketering; appar är körbara program. Använd MAJOR.MINOR.PATCH för att kommunicera ändringar på ett säkert sätt.

Gratis att börja

Lär dig C# med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
93
Lektioner
346

Vanliga frågor

Är lektionen ”Biblioteks- kontra app-.csproj och semantisk versionshantering” gratis?

Ja – hela texten till ”Biblioteks- kontra app-.csproj och semantisk versionshantering” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i C# Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i C# Academy innehåller totalt 3 lektioner.

Vad lär jag mig i ”Biblioteks- kontra app-.csproj och semantisk versionshantering”?

Förstå skillnaden mellan biblioteks- och app-.csproj, hur NuGet använder bibliotek och hur semantisk versionshantering (MAJOR.MINOR.PATCH) vägleder utgåvor. Ni övar på C# Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig C# Academy?

Du behöver inga förkunskaper. Utbildningen i C# Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 3.

Hur lång tid tar lektionen ”Biblioteks- kontra app-.csproj och semantisk versionshantering”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här C# Academy-lektionen?

Ja. Varje C# Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Biblioteks- kontra app-.csproj och semantisk versionshantering
  2. Paketering och publicering till NuGet
  3. Multi-targeting
← Tillbaka till C# Academy