使用Visual Studio 2008我已经构建了一个面向.Net Framework 2.0的COM对象。
我正在尝试在XP SP3上使用MS Access 2007中的组件。如果我使用早期绑定它可以完美地工作。如果我使用后期绑定,我会收到此错误:
Run-time error '429':
ActiveX component can't create object
这是我的代码:
Dim objTest as Object
Set objTest = CreateObject("MyComNameSpace.MyComClass") 'Error occurs here
答案 0 :(得分:2)
好吧,看起来ProgId不是“MyComNameSpace.MyComClass”。在注册表中查看Regedit.exe,它应该出现在HKEY_CLASSES_ROOT中。该密钥包含一个带有guid的CLSID密钥。该密钥应出现在HKLM\Software\Classes\CLSID\{guid}
中。其中包含由Regasm.exe编写的密钥,以启动CLR并加载程序集。
您可以看到COM客户端程序使用SysInternals的ProcMon实用程序搜索这些密钥,这是诊断缺失内容的一种不错的方法。
您可以使用[ProgId]属性来选择自己的属性,而不是让它选择.NET来选择一个。
以防万一,仅仅因为你使用后期绑定并不意味着你可以跳过注册步骤。请务必使用/ codebase选项从提升的命令提示符运行Regasm.exe以获取已注册的密钥。