0Pricing
C# Academy · Lekcja

Biblioteka a aplikacja .csproj i wersjonowanie semantyczne

Proszę zrozumieć różnice między .csproj biblioteki i aplikacji, sposób, w jaki NuGet korzysta z bibliotek, oraz to, jak wersjonowanie semantyczne (MAJOR.MINOR.PATCH) wyznacza sposób wydawania wersji.

Biblioteka a aplikacja .csproj i wersjonowanie semantyczne to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 1 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 3 lekcji w sumie.

Pojęcia i cele

Cel: Wiedza o tym, kiedy utworzyć bibliotekę zamiast aplikacji oraz jak wersje sygnalizują zmiany.

  • Biblioteka .csproj: przeznaczona do referencjonowania i pakowania dla NuGet
  • Aplikacja .csproj: tworzy plik wykonywalny dla użytkowników końcowych
  • Wersjonowanie semantyczne: MAJOR.MINOR.PATCH

Biblioteka a aplikacja: szybki przegląd

  • Biblioteka: określa frameworki docelowe, aby zmaksymalizować możliwość ponownego użycia; zawiera metadane (PackageId, Version, Authors).
  • Aplikacja: ma punkt wejścia i publikuje uruchamialne pliki wynikowe.
  • NuGet pakuje biblioteki do plików .nupkg; aplikacje są zwykle publikowane, a nie pakowane.

Przykład wersji assembly

Biblioteka udostępnia wersję; użytkownicy korzystający z pakietu widzą ją podczas dodawania referencji.

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

Porównywanie SemVer (podstawy)

Wersje należy porównywać, aby ustalić, czy dostępna jest aktualizacja: najpierw MAJOR, następnie MINOR, a na końcu 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")));
    }
  }
}

Reguły zmiany wersji

Reguły zmiany wersji:

  • MAJOR: zmiany powodujące niezgodność API
  • MINOR: nowe funkcje zgodne wstecz
  • PATCH: poprawki błędów i prace techniczne bez zmian w API

Wskazówka: Zmiany należy opisywać w krótkim dzienniku zmian.

Lista kontrolna przed pakowaniem

  • Ustawione frameworki docelowe biblioteki (np. netstandard)
  • Uzupełnione wartości PackageId, Version i Authors
  • Dołączona licencja lub plik README
  • Publiczne API sprawdzone pod kątem zmian powodujących niezgodność

Reguła SemVer

Szybkie sprawdzenie: Która zmiana zwykle wymaga zwiększenia numeru MAJOR zgodnie z wersjonowaniem semantycznym?

Podsumowanie

Podsumowanie: Biblioteki należy tworzyć z myślą o ponownym użyciu i pakowaniu dla NuGet, a aplikacje są plikami wykonywalnymi. Do bezpiecznego sygnalizowania zmian należy używać formatu MAJOR.MINOR.PATCH.

Często zadawane pytania

Czy lekcja „Biblioteka a aplikacja .csproj i wersjonowanie semantyczne” jest bezpłatna?

Tak — pełny tekst „Biblioteka a aplikacja .csproj i wersjonowanie semantyczne” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 3 lekcji w sumie.

Co nauczysz się w „Biblioteka a aplikacja .csproj i wersjonowanie semantyczne”?

Proszę zrozumieć różnice między .csproj biblioteki i aplikacji, sposób, w jaki NuGet korzysta z bibliotek, oraz to, jak wersjonowanie semantyczne (MAJOR.MINOR.PATCH) wyznacza sposób wydawania wersji. Ćwiczysz C# Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C# Academy?

Nie wymagamy żadnego doświadczenia. C# Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 3.

Ile czasu zajmuje lekcja „Biblioteka a aplikacja .csproj i wersjonowanie semantyczne”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C# Academy?

Tak. Każda lekcja C# Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Biblioteka a aplikacja .csproj i wersjonowanie semantyczne
  2. Pakowanie i publikowanie w NuGet
  3. Obsługa wielu platform docelowych
← Powrót do C# Academy