سؤال

يريد أحد العملاء استهلاك .NET DLLS من VB6. وهي مصممة لدعم عكس interop وجميعها تعمل بشكل جيد ... باستثناء: يوجد برنامجان منفصلان VB6 في دليلين مختلفين. يبدو أنه من الضروري القيام بواحد من:

  1. انسخ .NET DLL في كلا الدلتين ، أو
  2. تثبيت .NET DLL في GAC

هذه هي ملاحظة العميل ويدعمها أيضًا وثائق ريجسم:

بعد تسجيل مجموعة باستخدام regasm.exe ، يمكنك تثبيته في ذاكرة التخزين المؤقت للتجميع العالمي بحيث يمكن تنشيطه من أي عميل com. إذا تم تنشيط التجميع فقط من خلال تطبيق واحد ، فيمكنك وضعه في دليل هذا التطبيق.

أنا مرتبك في هذه النقطة.

النقطة الأولى للارتباك:

بقدر ما أفهم ، يحدد وقت تشغيل COM DLL باستخدام معرف Prog / Class. عندما أنظر إلى السجل في إدخال معرف الفصل ، أرى المسار الكامل إلى .NET DLL في مفتاح قاعدة الكود. لماذا لا يقوم برنامج COM باستخدام معرف Prog / Class بتحديد موقع .NET DLL باستخدام قاعدة الشفرة؟

النقطة الثانية للارتباك:

GAC محددة لـ .NET. كيف تشارك في حل مراجع COM؟

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

المحلول

أنت صحيح يستخدم com progID للوصول إلى ClassID للوصول إلى خادم COM لتحميله. في حالة .NET COM DLLS ، فإن خادم COM هو في الواقع mscoree ، وليس .NET DLL (قيمة المفتاح الافتراضي ضمن {clsid}/ocalserver32). MSCOREE ، وليس com ، ثم يمكن استخدام أي القواعد التي تريد العثور على مجموعة .NET.

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

على افتراض أنه يدعو فقط comply.load () مع قيمة اسم className ، فسوف يتبع .NET قواعد الربط. انظر أولاً في GAC ، إذا لم يتم العثور عليها ، فسيتم التحقيق - لذلك إذا تم تعريف قاعدة الكود ، فستبدو هناك فقط ، وإلا فإنها ستتحقق بناءً على قاعدة التطبيق (افتراضيًا دليل التطبيق [ولكن ليس لـ ASP.NET ]).

أعتقد أن هذا يتناسب مع ما تقرأه في ريجسم.

سؤالك قديم جدًا أفترض أنه كان obe, ، لكن القواعد التي تستخدمها لوضع التجميعات في دليل التطبيق, استخدم قاعدة كود, ، أو في GAC هي نفسها مع و/o com interop. كل موقف مختلف ولم أفعل ما يكفي .NET للتخلي عن أي رؤى عميقة. أفضل تثبيت Xcopy لذلك سأذهب مع دليل التطبيق (واستخدام التسجيل الحرة كوم) ولكن هناك اعتبارات أخرى مثل إذا كان يجب على تطبيق اثنين VB استخدام نفس الإصدار من كائن COM.

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