ملف .csproj للمكتبة مقابل التطبيق، والإصدار الدلالي
افهم الفرق بين .csproj للمكتبة والتطبيق، وكيف يستهلك NuGet المكتبات، وكيف يوجّه الإصدار الدلالي (MAJOR.MINOR.PATCH) عمليات الإصدار.
ملف .csproj للمكتبة مقابل التطبيق، والإصدار الدلالي درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 1 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 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: تغييرات كاسرة في API
- MINOR: ميزات جديدة متوافقة مع الإصدارات السابقة
- PATCH: إصلاحات أخطاء وأعمال صيانة من دون تغيير API
نصيحة: وضّح التغييرات في سجل تغييرات موجز.
قائمة التحقق قبل الحزم
- تعيين الأطر المستهدفة للمكتبة، مثل netstandard
- تعبئة PackageId وVersion وAuthors
- تضمين الترخيص وreadme
- مراجعة API العامة بحثًا عن تغييرات كاسرة
قاعدة SemVer
مراجعة
مراجعة: أنشئ المكتبات لإعادة الاستخدام والحزم في NuGet؛ أما التطبيقات فهي ملفات تنفيذية. استخدم MAJOR.MINOR.PATCH للتعبير عن التغييرات بأمان.
الأسئلة الشائعة
هل درس «ملف .csproj للمكتبة مقابل التطبيق، والإصدار الدلالي» مجاني؟
نعم — نص درس «ملف .csproj للمكتبة مقابل التطبيق، والإصدار الدلالي» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 3 دروس في المجموع.
ماذا ستتعلم في «ملف .csproj للمكتبة مقابل التطبيق، والإصدار الدلالي»؟
افهم الفرق بين .csproj للمكتبة والتطبيق، وكيف يستهلك NuGet المكتبات، وكيف يوجّه الإصدار الدلالي (MAJOR.MINOR.PATCH) عمليات الإصدار. تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟
لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 3.
كم من الوقت يستغرق درس «ملف .csproj للمكتبة مقابل التطبيق، والإصدار الدلالي»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟
نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ملف .csproj للمكتبة مقابل التطبيق، والإصدار الدلالي
- حزم المكتبات ونشرها إلى NuGet
- الاستهداف المتعدد