محاولة الحصول على TFS TeamBuild لبناء C #> VB6> C # (ComReference Prob؟)

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

  •  13-12-2019
  •  | 
  •  

سؤال

أحاول الحصول على TFS Team-Build إلى إنشاء تطبيق WPF C # بشكل موثوق. يعتمد هذا التطبيق على vb6lib.dll الذي نحافظ عليه، هذا يعتمد نفسه على VB6Lib.dll نفسها على C # Libs الأخرى التي نحافظ عليها أيضا.

قمت بإعداد تعريف بناء للبناء (بالترتيب):

  • vbdependences.sln (جميع libs في هذا يحتوي على مجموعة Interop COM، وبالتالي يمكن لشركة VB6 العثور على TLBs الخاص بهم)
  • buildvb6lib.proj (ملف msbuild الذي يستدعي "vb6.exe / mak / d" لجعل vblib.dll على خادم البناء، كجزء من هذا البرنامج النصي لقد قمت بنسخ إخراج vb6lib.dll إلى ج: \ TMP)
  • mainapp.sln (في مساحة العمل الخاصة بي، لقد أضفت مرجعا إلى c: \ tmp \ vb6lib.dll)

هل هذا الصوت موافق ؟ على جهاز الكمبيوتر المحمول Dev، عادة ما أبني VB6، انسخ إخراجها إلى \ TMP ثم regsvr32 هناك قبل إضافة مرجع إليها في محلول C #. هذه الخطوة أنني لست مقتنعا في Build Def يقوم بذلك.

أيضا، هل هناك طريقة للحصول على إخراج أكثر فائدة من Build VB6، حاليا أحصل على "ترجمة" في ملف "XXX.BAS" يمكن "العثور على مشروع مكتبة"، ولكن ليس المكتبة الفعلية التي لا يمكن العثور عليها .

هتافات

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

المحلول

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

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

giveacodicetagpre.

قم بتشغيل هذا الأمر في نظام التطوير الخاص بك، ثم قم بإزالة المرجع إلى VB6Lib.dll وإضافة مرجع إلى Interop.vblib.dll.يمكنك بعد ذلك إضافة أمر Tlbimp كحدث Prebuild في المشروع الرجعي بحيث يبني تجميع Interop دائما من الإصدار الصحيح، ولن تحتاج مرة أخرى إلى أن يكون لديك كائن COM المسجل في نظام الإنشاء.

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