我一方面有一个 C# .Net 4.0 应用程序,另一方面有一个 VB6 应用程序。我通过使 Project COM Visible 和 actived register COM Interop 创建了一个 COM 接口。
我通过实现一个导入新 tlb 文件的 C# 应用程序来测试 COM 接口。一切似乎都很好。
作为下一步,我尝试将 dll 与 vb6 一起使用。可以加载 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:到目前为止,我尝试过:->所有项目都是构建 x86-> 在 x86 机器上构建项目-> Dependency Walker(缺少 GPSVC.DLL 和 IESHIMS.DLL,但他们以前也这样做过,我认为他们没有 anny效果导致 tlb 已构建并且可以加载)-> 尝试了 tlbexp.exe 但得到一个依赖错误,导致 assambly 运行时比当前运行时更新。wtf?)