COM类可见性:C#到VB6

Mar*_*kus 7 c# vb6 dependencies tlbexp typelib

我一方面有一个C#.Net 4.0应用程序,另一方面有一个VB6应用程序.我通过使Project COM Visible和actived寄存器COM Interop创建了一个COM接口.

我通过实现导入新tlb文件的C#应用​​程序来测试COM接口.一切似乎都很好.

下一步我尝试将dll与vb6一起使用.可以加载DLL,但现在我看不到所有公共类.在C#中我看到vb6中的4个类我只能看到3个.

我看不到的类是一个"特殊"类,因为它会触发一个接口并提供事件.

该课程标有

[ComSourceInterfaces(typeof(COMEvents))]
Run Code Online (Sandbox Code Playgroud)

和COMEvents接口就好

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

我不得不说一切都很好.比我添加了一个项目,它只影响COM接口项目在运行时加载的其他程序集.他们实现了一个改变的界面.这是我对com接口所做的唯一更改是向方法添加additonal参数.

为什么我不能再看到班级了?为什么只有我改变的课程,但没有"危险"的方式?

需要帮助谢谢!

PS:我到现在为止尝试: - >所有项目都是构建x86 - > x86机器上的项目构建 - >依赖性Walker(GPSVC.DLL和IESHIMS.DLL都丢失但他们之前也做过,我认为他们没有anny效果导致tlb构建并且可以加载) - >尝试tlbexp.exe但得到依赖性错误导致assambly运行时比当前运行时更新.WTF?)

Mar*_*kus 5

发现它...具有2个参数的构造函数,而VB6不支持具有零个以上参数的构造函数。