سؤال

لدي وظيفة إضافية في برنامج Excel والتي أقوم بإضافة العديد من وحدات الفصل الدراسي إليها بحيث أصبحت الآن ضخمة جدًا.أريد تحويلها إلى مكتبة نوع أو حزمة COM حتى أتمكن من إعادة استخدامها للتطبيقات الأخرى في مجموعة MS Office.

لقد قمت بنقل الوظيفة الإضافية إلى Visual Studio كمشروع مكتبة فئة ولكن Excel Automation لا يتعرف على الفئات الموجودة في ملف .dll المترجم.أعتقد بشكل حدسي أنني سأحتاج إلى بيان أو واجهة أو شيء من هذا القبيل في الكود الخاص بي.

ما الذي أحتاج إلى معرفته لعرض أساليب الفصل الدراسي وخصائصه لاستخدامها في أتمتة OLE؟

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

المحلول

أفترض أنك، بما أنك استخدمت عبارة البيان، فإنك تقوم بتجميع ملف DLL هذا باستخدام منصة تطوير .net VS2003 أو VS2005 أو VS2008 مقارنة بـ VS 6.0

هذا وصلة يوفر مجموعة مفصلة من الخطوات المطلوبة لتسجيل تجميع .NET لاستخدامه كمكون COM.

الشيء الوحيد الذي لم تذكره المقالة والذي أقوم به بشكل روتيني هو إنشاء المعرفات الفريدة العمومية (GUID) الخاصة بي.استخدم عنصر إنشاء GUID في قائمة الأدوات ثم قم بإدراجه فوق الفئات والواجهات والتعدادات التي تريد عرضها لـ COM.

[Guid("3838ADC1-E901-4003-BD0C-A889A7CF25A1")]
public interface IMyCOMClass  {
    void MyMethod(); 
}

[Guid("476BDEB6-B933-4ed5-8B86-7D9330A59356"),
ClassInterface(ClassInterfaceType.None)]
public class MyCOMClass : IMyCOMClass {
    public void MyMethod() { 
        //implementation here
    }
}

الشيء الثاني الذي أقوم به هو استخدام واجهة منفصلة لجزء COM الذي يتم تنفيذه بواسطة الفصل.السبب وراء القيام بذلك يتعلق بقابلية كسر COM عند تغيير الواجهة، فكر في DLL Hell.

أتمنى أن يساعد هذا بيل.

نصائح أخرى

(بافتراض أنه مشروع .NET)

إلى جانب الاضطرار إلى إضافة الأدلة إلى واجهاتك وفئاتك، تحتاج أيضًا إلى وضع علامة عليها باستخدام السمة ComVisible (ما لم تقم بوضع علامة على التجميع بأكمله بها).تحتاج أيضًا إلى استخدام tlbexp.exe لتصدير بيانات التعريف كمكتبة نوع COM للرجوع إليها في العملاء غير المُدارين.

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