2011-03-11 28 views
6

Bir yandan C# .Net 4.0 Uygulaması var, diğerinde ise VB6 Uygulaması var. Project COM Visible ve COM Interop kayıt etkin hale getirerek bir COM Arabirimi oluşturdu.COM sınıfının görünebilirliği: C# to VB6

COM arabirimini yeni tlb dosyasını içe aktardığı bir C# Uygulaması uygulayarak test ettim. Her şey iyi görünüyor.

Bir sonraki adımda dll'yi vb6 ile kullanmaya çalıştım. Dll yüklenebilir ancak şimdi tüm genel sınıfları göremiyorum. C# içinde ben66 sınıfını görüyorum. Sadece 3'ü görebiliyorum. 3.

Göremediğim sınıf bir "özel" olanıdır, çünkü bir arabirimi engeller ve olaylar sunar.

sınıf

[ComSourceInterfaces(typeof(COMEvents))] 

ile işaretlenmiş ve tüm iyi çalıştı söylemek zorunda

[Guid("11947063-4665-4DE1-931D-9915CCD01794")] 
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] 
    public interface COMEvents 
    { 
     void MethodOne(); 
     void MethodTwo(); 
    } 

gibi COMEvents arayüzüdür edilir. COM arayüz projesi tarafından sadece çalışma zamanında yüklenen diğer montajları etkileyen bir proje ekledim. Değişen bir arayüz uyguluyorlar. Com arabiriminde yaptığım tek değişiklik, bir yönteme ek parametre eklemektir.

Artık Sınıfı neden göremiyorum? Ve neden sadece değişmiş olduğum ama hiç riskli olmayan bir sınıf değil?

Yardıma ihtiyacınız var!

Not: Ben çalıştı şimdi: -> Bütün Proje x86 kurmak vardır -> Proje x86 Makinesine kurmak -> Bağımlılık Walker (GPSVC.DLL ve IESHIMS.DLL eksik ama daha önce de yaptım ve Ben onlar anny etkisi var sanırım tlb inşa ve yüklenebilir neden) -> tryied tlbexp.exe ama bağımlılık hatası almak assambly çalışma zamanı şimdi geçerli olandan daha yeni. wtf?)

cevap

4

Bulunan ... 2 parametreli kurucuya sahipti ve VB6, sıfır parametrelere sahip kurucuları desteklemiyor.

+1

Merak ediyorsun ... "bağımlılık hatası al, çünkü assambly çalışma zamanı, mevcut olandan daha yenidir." ... Tamamıyla ilişkili olmayan bir hata ve hala sebat ettin. Seni selamlıyorum cesur adam. –