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.
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
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.
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
- Biblioteks- kontra app-.csproj och semantisk versionshantering
- Paketering och publicering till NuGet
- Multi-targeting