我正在开发一个使用VB 6生成的COM DLL的.Net 2 C#应用程序。 VB DLL经常更新我的应用程序崩溃与System.Runtime.InteropServices.COMException(0x80040154)。我使用的COM DLL的一部分不会改变,但版本(和CLSID)将会改变。
引用的“特定版本”选项为false。 WrapperTool是tlbimp。
如何告诉我的应用程序不要担心DLL中的更改?有没有办法检查我正在使用的功能?
答案 0 :(得分:2)
这是最常见的COM错误之一,“Class not registered”。它从VB6开始,它有一个控制二进制兼容性的选项。我忘记了它的样子,它已经太久了。如果你不控制它,VB6将创建一个具有不同CLSID值的新COM服务器。这需要使用Regsvr32.exe重新注册DLL。并使用Tlbimp.exe重新生成互操作库。后一步可能就是你错过的那一步。
请注意,使用不同的CLSID值是COM的一项硬性要求,必须在公共接口更改时完成。但不是只在实施改变时。