ما هي أفضل طريقة لاستخدام سمات إصدار التجميع؟

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

  •  05-07-2019
  •  | 
  •  

سؤال

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

لذا أود أن أسأل، ما هي الطرق التي تم تحديدها للقيام بأفضل عمل للحصول على أرقام الإصدارات التي تعكس الإصدار الفعلي للمشروع بشكل أفضل؟هل لديك برنامج نصي مسبق الإنشاء يضبط جزءًا من الإصدار على التاريخ والوقت، أو إصدار المستودع لنسخة العمل الخاصة بك من المشروع؟هل تستخدم فقط الجيل التلقائي الذي يوفره الإطار؟أو أي شيء آخر؟ما هي أفضل طريقة لإدارة إصدارات التجميع/الملفات؟

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

المحلول

في مشروعي الحالي، ونحن نستخدم عدد التخريب المراجعة باعتبارها أقل (بناء) جزءا كبيرا من رقم الإصدار، ونحن نستخدم برنامج نصي نانت لإنشاء المشروع AssemblyInfo الملف. نحن نستخدم نفس رقم الإصدار لكل من AssemblyVersion وAssemblyFileVersion الصفات. (الأجزاء الثلاثة الأخرى هي major.minor.point، حيث يمكن زيادة MAJOR.MINOR في كل مرة هناك تغيير مخطط قاعدة البيانات، ويتم زيادة نقطة عن كل إصدار).

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

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

نصائح أخرى

أرى العديد من المشاركات هنا حول استخدام رقم مراجعة التخريب كأحد مكونات إصدار التجميع. احذر:أرقام الإصدارات الأربعة المتوفرة في نظام التشغيل Windows (a.b.c.d) تقتصر كل منها على 16 بت (الحد الأقصى = 65535). يمكن أن يتجاوز رقم مراجعة التخريب هذا الحد بسهولة، خاصة إذا كنت تستضيف مشاريع متعددة في نفس المستودع.

في وظيفة سابقة، حيث استخدمنا Subversion، قمت بتشغيل برنامج نصي nant حول ccnet لاستخراج إصدار المستودع واستخدامه كرقم نهائي.

في هذه المهمة، نستخدم VSS (المصراع)، لذا فهذا ليس خيارًا حقًا، لذلك لدينا سياسة تحديثه يدويًا، مع الإرشادات التالية:

  • رئيسي :تغييرات كبيرة (> 25%) أو إضافة في الوظيفة أو الواجهة.
  • صغير :تغييرات أو إضافات صغيرة في الوظيفة أو الواجهة.
  • يبني :تغييرات طفيفة تؤدي إلى كسر الواجهة.
  • مراجعة:إصلاحات للبنية التي لا تغير الواجهة.

نحافظ أيضًا على مزامنة إصدارات التجميع والملف.يمكن قراءة إصدار التجميع بسهولة برمجيًا، بينما يمكن عرض إصدار الملف كعمود في وضع التفاصيل في Windows Explorer.

ولدينا مخطوطات بناء حقن عدد changeset من TFS في الإصدار. وبهذه الطريقة نحن نعرف بالضبط ما هي عمليات الوصول في الإنشاء.

ونحن لدينا الخادم CruiseControl.NET بناء تضمين عدد قائمة تغييرات بالضرورة في AssemblyFileVersion - وهذا يتيح لنا تتبع إلى شفرة المصدر لأي تجمع بنيت من قبل الملقم بناء. (نحن دائما بناء من الفرع الرئيسي).

لالتجميعات التي عملاء سيتم الرجوع نترك ثابت AssemblyVersion ما لم تكن هناك تغييرات كسر، وفي هذه الحالة زيادة النسخة للتأكد من أن كود العميل يحصل على إعادة بناء ضد الإصدار الجديد.

ونحن نستخدم الإصدارات من التخريب ولها buildscripts تحديث معلومات إصدار التجميع، لذلك السيطرة على عمليات الوصول مصدر الإصدارات.

ونحن نميل إلى تضمين اطلاق سراح (أو بناء) التاريخ في التجمع. على سبيل المثال إذا بنيت اليوم ان النسخة ستكون "2008/10/06" (السيناريو بناء بتحديث ذلك).

ووAssemblyVersionAttribute هو جزء من هوية البرلمان. تغيير هذا يعني أنه هو التجمع والبرامج التي تربط لهذا التجمع مختلفة تحتاج إلى معاد / مرتبط أو حاجة سياسة نسخة ليتم تطبيقها. لم نجد أن apealing لذلك اخترنا أن يؤدي إلا إلى زيادة AssemblyFileVersion لكل الإصلاح وفقط تغيير AssemblyVersion عن كل إصدار رئيسي. ونحن ندرك أن هذا القرار يعيد بعض من الجحيم Win32 ودلل. نزيد AssemblyFileVersion لكل بناء وتسمية / العلامة نظام التحكم في الإصدار مع هذا الإصدار حتى نعرف عما مصدر جاء ثنائي.

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