كيفية الرجوع إلى التجميعات المشتركة التي لا تزال قيد التطوير (.NET)

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

  •  07-07-2019
  •  | 
  •  

سؤال

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

الآن، يتم وضع التجميعات في مجلد مشترك حيث يمكن لمشاريع التطوير الرجوع إلى نفس التجميعات.يعد تطبيق التحديثات أمرًا بسيطًا مثل استبدال الملفات وتلتقط مشاريع التطوير التغييرات تلقائيًا في المرة التالية التي يتم فيها تحميلها وإنشائها.

المشكلة التي أواجهها هي أنه قد يكون لدينا عدة "طبقات" من التجميعات المبنية على إطار العمل - على سبيل المثال، لدينا مكتبة أساسية مشتركة بين جميع التطبيقات ومكتبة خادم تشير إلى النواة ويتم مشاركتها بواسطة جميع تطبيقات الخادم.يجب أيضًا إعادة بناء كافة التبعيات في كل مرة يتم فيها تحديث تجميعات إطار العمل، مما يجعل هذه مهمة كبيرة جدًا.لا أعتقد أنه يمكنني استخدام GAC لأن هذا سيتطلب قيام جميع المطورين بتحديث أنظمتهم في كل مرة يتم فيها إصدار إصدار جديد.

لقد قمت بالتحقق من سياسات الناشر ولكن لدي بعض الشكوك في أن هذا سيحل مشكلتي لعدة أسباب:

  • أولاً، لا أرغب في إعادة إنشاء الملف في كل مرة أقوم فيها بإعادة بناء مجموعات إطار العمل الخاصة بي - هل هناك طريقة يمكنني من خلالها أتمتة هذه العملية؟

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

  • ليس لدي أي سيطرة على إعداد الشبكة وتكوينها، لذلك من الضروري تجنب مشكلة "الثقة" بأكملها عن طريق وضع الملفات في مشاركة عبر الشبكة.بالإضافة إلى ذلك، يعمل العديد من المطورين لدينا بطريقة متصلة أحيانًا ونريد أن تكون الملفات متاحة لهم عند قطع الاتصال.

سيكون الهدف هو جعل تحديث هذه التجميعات شفافًا لمطوري التطبيقات لدينا الذين يستخدمونها.سنقوم بلا شك بتثبيت هذه التجميعات في GAC على الجهاز المستهدف عند تثبيت التطبيق، ولكننا لا نريد القيام بذلك لأغراض التطوير.ليس من المعقول أيضًا تضمين المشاريع في حل كل تطبيق لأنها تم تطويرها بواسطة فرق مختلفة.

لا أستطيع أن أتخيل أنني وحدي في هذه المتطلبات وأتمنى أن يشاركني أحد بخبرته وحكمته ليرشدني إلى الحل.شكرًا!

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

المحلول 2

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

نصائح أخرى

لا تحتاج بالضرورة إلى تثبيت التجميعات في GAC - لا شيء في الإعداد الخاص بك يتطلب ذلك.

المشكلة الرئيسية هنا هي التأكد من أن التجميع يفرض إعادة بناء جميع تبعياته، وأن كل هذه التبعيات موضوعة في موقع مشترك.

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

يمكنك بعد ذلك جعل خادم الإنشاء ينسخ كل شيء إلى موقع مشترك.إذا كانت المشاريع تشير إلى الموقع المشترك، وتنص صراحةً على عدم التقييد بإصدار معين، فيجب أن يعمل كل شيء بشكل جيد.

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