2011-03-11 93 views
6

我有一個C#.Net 4.0應用程序和另一個VB6應用程序。我通過使Project COM Visible和Actived寄存器COM Interop創建了一個COM接口。COM類的可見性:C#到VB6

I通過執行C#應用程序測試COM接口,以導入新的tlb文件。一切似乎都很好。

下一步我試圖用vb6來使用dll。該DLL可以加載,但現在我看不到所有的公共課程。在C#中,我看到vb6中有4個類,我只能看到3.

我看不到的類是一個「特殊的」類,它導致了一個接口和服務事件。

類標有

[ComSourceInterfaces(typeof(COMEvents))] 

和COMEvents界面中,就像

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

我不得不說,所有工作得很好。比我添加了一個項目,它隻影響其他程序集,而這些程序集是由COM接口項目在運行時加載的。他們實現了一個改變了的界面。這是我對com界面做出的唯一改變是爲方法添加了附加參數。

爲什麼我不能再看到課堂?爲什麼只有我改變了班級,卻沒有「冒險」的方式?

需要幫助謝謝!

PS: 我嘗試到現在: - >所有項目都建立86 - 在x86機器>項目建設 - >的Dependency Walker(GPSVC.DLL和IESHIMS.DLL失蹤,但他們以前那樣和也我不認爲他們有anny效果導致tlb生成並可以加載) - > tryied tlbexp.exe但得到一個依賴性錯誤導致assambly運行時比目前新。 wtf?)

回答

4

發現它...有2個參數的構造函數和VB6不支持具有更多零參數的構造函數。

+1

讓你想知道......「得到一個依賴性錯誤導致assambly運行時比當前更新。」....一個完全不相關的錯誤,但你仍然堅持下去。我向你致敬,你勇敢的人。 – 2011-11-30 12:43:59