2

我有一个正在开发的 .Net 2 C# 应用程序,它使用 VB 6 生成的 COM DLL。VB DLL 会经常更新,因为我的应用程序因 System.Runtime.InteropServices.COMException (0x80040154) 而崩溃。我使用的 COM DLL 部分不会改变,但版本(和 CLSID)会改变。

参考的“特定版本”选项为假。WrapperTool 是 tlbimp。

如何告诉我的应用程序不要担心 DLL 中的更改?有什么方法可以检查我正在使用的功能吗?

4

1 回答 1

2

这是最常见的 COM 错误之一,“类未注册”。它从 VB6 开始,它具有控制二进制兼容性的选项。具体是什么样子的我忘记了,太长了。如果您不控制这一点,VB6 将创建一个具有不同 CLSID 值的新 COM 服务器。这需要使用 Regsvr32.exe 重新注册 DLL。并使用 Tlbimp.exe 重新生成互操作库。后一步可能是您错过的步骤。

请注意,使用不同的 CLSID 值是 COM 的硬性要求,必须在公共接口更改时完成。但不是当只有实现发生变化时。

于 2010-03-16T00:28:19.767 回答