.NET组件 - 使用后期绑定时出错

时间:2011-03-23 18:09:18

标签: .net vb.net com

使用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

1 个答案:

答案 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以获取已注册的密钥。