لماذا C # ليس لديها مكتبات ثابتة على غرار C ++؟ [مغلق

StackOverflow https://stackoverflow.com/questions/1835761

  •  11-09-2019
  •  | 
  •  

سؤال

في الآونة الأخيرة كنت أعمل على عدد قليل من تطبيقات .NET الصغيرة التي تشارك بعض الكود الشائع. الرمز يحتوي على بعض الواجهات التي تم تقديمها إلى مجردة I / O. يدعو إلى اختبار الوحدة.

أردت أن تكون التطبيقات مستقلة مع عدم وجود تبعيات خارجية. هذا يبدو وكأنه حالة الاستخدام المثالي للمكتبات الثابتة. تعال إلى التفكير في أنه يمكن أن يستفيد بائعي التحكم في الطرف الثالث من هذا النموذج أيضا.

هل هناك بعض الأرقام الخفية مع المكتبات الثابتة التي فاتنيها؟

هل هناك أي سبب لماذا ترك مصممي C # لهم؟

تحرير: أنا أدرك Ilmerge لكنها لا تقدم نفس الراحة مثل المكتبات الثابتة.

هل كانت مفيدة؟

المحلول

.NET لا تدعم في الواقع المكافئ الأخلاقي لمكتبة ثابتة. يطلق عليه اسم NetModule (تمديد الملف عادة .NETModule). اقرأ المزيد عنها في هذا مشاركة مدونةوبعد احذروا أنه غير مدعوم جيدا بواسطة سلسلة أداة بناء Visual Studio. أظن طرق التمديد هي مشكلة كذلك. Ilmerge هي أداة أفضل للحصول على هذا القيام به.

نصائح أخرى

هذا لا يرتبط مباشرة مع C #، ولكن إلى مظلة .NET بالكامل. بالتأكيد، من الممكن دمج التجميعات باستخدام ilmerge., لكن Alas ما زال مشروعا بحثيا، ولكن على الأقل يسمح بتصاريح الترخيص في المساعي التجارية. بخلاف ذلك، لا يمكن الكفاءة في وقت التشغيل (CLR) في التنفيذ الفردي، لا تزال النظام الأساسي المستهدف يحتاج إلى تثبيت .NET المراد تثبيته.

يحرر:

كنت كتب هذا قبل تحرير رسالتك مع Ilmerge. قد أكون مخطئا ولكن لا توجد فوائد إضافية من تجنب الارتباط الديناميكي على غرار .NET في وقت التشغيل. لا يوجد شيء خاطئ في وضع جمعيات الأقمار الصناعية مع القابل للتنفيذ. لا توصي Microsoft بوضعها في GAC.

باستخدام Libs Static لديه العيب أنه غير قابل للتصنيع عن طريق مزود وقت التشغيل (MS).

على سبيل المثال، إذا كنت تستخدم Libs MFC ثابتة وقضية Securify أو علة أخرى موجودة في Libs Static MFC، لا يمكن أن تصحيح MS (الرمز بالفعل في قابلة للتنفيذ). يسمح استخدام DLLs المشترك بتصحيح سهل على مستوى نظام التشغيل دون رعاية ذلك.

بالطبع وجود Libs المشترك له عيب صغير: يتم أخذ التبعية ويجب تثبيتها على النظام.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top