0Pricing
C# Academy · บทเรียน

ไลบรารีกับแอป .csproj และการกำหนดเวอร์ชันเชิงความหมาย

ทำความเข้าใจ .csproj ของไลบรารีกับแอป วิธีที่ NuGet นำไลบรารีไปใช้ และวิธีที่การกำหนดเวอร์ชันเชิงความหมาย (MAJOR.MINOR.PATCH) ช่วยกำกับการเผยแพร่รุ่น

ไลบรารีกับแอป .csproj และการกำหนดเวอร์ชันเชิงความหมาย เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 3 บทเรียน

แนวคิดและเป้าหมาย

เป้าหมาย: รู้ว่าเมื่อใดควรสร้าง ไลบรารี หรือ แอป และเข้าใจว่าเวอร์ชันสื่อถึงการเปลี่ยนแปลงอย่างไร

  • ไฟล์โครงการของไลบรารี .csproj: สร้างขึ้นเพื่อให้ ถูกอ้างอิง และบรรจุสำหรับ NuGet
  • ไฟล์โครงการของแอป .csproj: สร้างไฟล์ที่เรียกใช้งานได้สำหรับผู้ใช้ปลายทาง
  • การกำหนดเวอร์ชันตามหลักความหมาย: MAJOR.MINOR.PATCH

ไลบรารีกับแอป: มุมมองโดยสรุป

  • ไลบรารี: กำหนดเป้าหมายเฟรมเวิร์กเพื่อเพิ่มการนำกลับมาใช้ใหม่ และมีข้อมูลเมตา เช่น PackageId, Version และ Authors
  • แอป: มีจุดเริ่มต้นการทำงาน และเผยแพร่ผลลัพธ์ที่เรียกใช้งานได้
  • NuGet บรรจุ ไลบรารีเป็นไฟล์ .nupkg ส่วนแอปโดยทั่วไปจะเผยแพร่แทนการบรรจุ

การสาธิตเวอร์ชันของชุดประกอบ

ไลบรารีจะแสดงเวอร์ชัน และผู้ใช้จะเห็นเวอร์ชันนี้เมื่ออ้างอิงแพ็กเกจ

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 (พื้นฐาน)

เปรียบเทียบเวอร์ชันเพื่อพิจารณาการอัปเดต โดยเปรียบเทียบ MAJOR ก่อน จากนั้น MINOR และ 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")));
    }
  }
}

กฎการเพิ่มเวอร์ชัน

กฎการเพิ่มเวอร์ชัน:

  • MAJOR: การเปลี่ยนแปลงส่วนติดต่อโปรแกรมประยุกต์ที่ทำให้ของเดิมใช้ไม่ได้
  • MINOR: ความสามารถใหม่ที่ยังเข้ากันได้กับเวอร์ชันก่อนหน้า
  • PATCH: การแก้ข้อผิดพลาดหรืองานบำรุงรักษา โดยไม่เปลี่ยนส่วนติดต่อโปรแกรมประยุกต์

เคล็ดลับ: สื่อสารการเปลี่ยนแปลงในบันทึกการเปลี่ยนแปลงสั้น ๆ

รายการตรวจสอบก่อนบรรจุ

  • กำหนดเป้าหมายของไลบรารีแล้ว เช่น netstandard
  • กรอก PackageId, Version และ Authors แล้ว
  • รวมใบอนุญาตและ README แล้ว
  • ตรวจสอบส่วนติดต่อโปรแกรมประยุกต์สาธารณะเพื่อหาการเปลี่ยนแปลงที่ทำให้ของเดิมใช้ไม่ได้

กฎ SemVer

ตรวจสอบความเข้าใจอย่างรวดเร็ว: การเปลี่ยนแปลงใดโดยปกติต้องเพิ่มเวอร์ชัน MAJOR ตามหลักการกำหนดเวอร์ชันเชิงความหมาย

ทบทวน

ทบทวน: สร้าง ไลบรารีเพื่อการนำกลับมาใช้ใหม่และการบรรจุสำหรับ NuGet ส่วนแอปคือไฟล์ที่เรียกใช้งานได้ ใช้ MAJOR.MINOR.PATCH เพื่อสื่อสารการเปลี่ยนแปลงอย่างปลอดภัย

คำถามที่พบบ่อย

บทเรียน “ไลบรารีกับแอป .csproj และการกำหนดเวอร์ชันเชิงความหมาย” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ไลบรารีกับแอป .csproj และการกำหนดเวอร์ชันเชิงความหมาย” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ไลบรารีกับแอป .csproj และการกำหนดเวอร์ชันเชิงความหมาย”

ทำความเข้าใจ .csproj ของไลบรารีกับแอป วิธีที่ NuGet นำไลบรารีไปใช้ และวิธีที่การกำหนดเวอร์ชันเชิงความหมาย (MAJOR.MINOR.PATCH) ช่วยกำกับการเผยแพร่รุ่น คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน

บทเรียน “ไลบรารีกับแอป .csproj และการกำหนดเวอร์ชันเชิงความหมาย” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม

ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ไลบรารีกับแอป .csproj และการกำหนดเวอร์ชันเชิงความหมาย
  2. การแพ็กและเผยแพร่ไปยัง NuGet
  3. การรองรับหลายเป้าหมาย
← กลับไปที่ C# Academy