在C#中COM的松散耦合或如何避免COMException 0x80040154

时间:2010-03-15 23:46:47

标签: c# com vb6 sharpdevelop

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

引用的“特定版本”选项为false。 WrapperTool是tlbimp。

如何告诉我的应用程序不要担心DLL中的更改?有没有办法检查我正在使用的功能?

1 个答案:

答案 0 :(得分:2)

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

请注意,使用不同的CLSID值是COM的一项硬性要求,必须在公共接口更改时完成。但不是只在实施改变时。