0Pricing
C# Academy · Ders

Kitaplık ve uygulama .csproj dosyaları, anlamsal sürümleme

Kitaplık ve uygulama .csproj dosyaları arasındaki farkı, NuGet'in kitaplıkları nasıl tükettiğini ve anlamsal sürümlemenin (MAJOR.MINOR.PATCH) sürümleri nasıl yönlendirdiğini anlayın.

Kitaplık ve uygulama .csproj dosyaları, anlamsal sürümleme, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 3 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 3 dersten oluşur.

Kavramlar ve hedefler

Hedef: Ne zaman bir kitaplık, ne zaman bir uygulama oluşturacağınızı ve sürümlerin değişikliği nasıl belirttiğini öğrenin.

  • Kitaplık .csproj: başvurulmak ve NuGet için paketlenmek üzere oluşturulur
  • Uygulama .csproj: son kullanıcılar için çalıştırılabilir bir dosya üretir
  • Anlamsal sürümleme: MAJOR.MINOR.PATCH

Kitaplık ve uygulama: kısa bakış

  • Kitaplık: yeniden kullanımı artırmak için çerçeveleri hedefler; üst veriler içerir (PackageId, Version, Authors).
  • Uygulama: bir giriş noktasına sahiptir; çalıştırılabilir çıktı yayımlar.
  • NuGet, kitaplıkları .nupkg içine paketler; uygulamalar genellikle paketlenmez, yayımlanır.

Derleme sürümü gösterimi

Bir kitaplık bir sürüm sunar; tüketiciler pakete başvurduğunda bu sürümü görür.

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

SemVer karşılaştırması (temel)

Güncelleştirmelere karar vermek için sürümleri karşılaştırın: önce MAJOR, sonra MINOR, ardından 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")));
    }
  }
}

Sürüm artırma kuralları

Sürüm artırma kuralları:

  • MAJOR: geriye dönük uyumsuz API değişiklikleri
  • MINOR: geriye dönük uyumlu yeni özellikler
  • PATCH: API değişikliği içermeyen hata düzeltmeleri/bakım işleri

İpucu: Değişiklikleri kısa bir değişiklik günlüğünde açıklayın.

Paketleme öncesi kontrol listesi

  • Kitaplık hedefleri ayarlanmış (ör. netstandard)
  • PackageId, Version, Authors doldurulmuş
  • Lisans/README dahil edilmiş
  • Genel API, uyumsuzluklar açısından gözden geçirilmiş

SemVer kuralı

Hızlı kontrol: Anlamsal sürümleme kapsamında hangi değişiklik normalde MAJOR sürüm artışı gerektirir?

Özet

Özet: Yeniden kullanım ve NuGet paketlemesi için kitaplıklar oluşturun; uygulamalar çalıştırılabilir dosyalardır. Değişiklikleri güvenli biçimde belirtmek için MAJOR.MINOR.PATCH kullanın.

Sıkça Sorulan Sorular

“Kitaplık ve uygulama .csproj dosyaları, anlamsal sürümleme” dersi ücretsiz mi?

Evet — “Kitaplık ve uygulama .csproj dosyaları, anlamsal sürümleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 3 dersten oluşur.

“Kitaplık ve uygulama .csproj dosyaları, anlamsal sürümleme” dersinde ne öğreneceğim?

Kitaplık ve uygulama .csproj dosyaları arasındaki farkı, NuGet'in kitaplıkları nasıl tükettiğini ve anlamsal sürümlemenin (MAJOR.MINOR.PATCH) sürümleri nasıl yönlendirdiğini anlayın. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C# Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 1. dersidir.

“Kitaplık ve uygulama .csproj dosyaları, anlamsal sürümleme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Kitaplık ve uygulama .csproj dosyaları, anlamsal sürümleme
  2. NuGet'e paketleme ve yayımlama
  3. Birden çok hedefleme
← C# Academy Sayfasına Dön