【问题标题】:.NET Component - Error when using Late Binding.NET 组件 - 使用后期绑定时出错
【发布时间】:2011-03-24 02:53:42
【问题描述】:

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

【问题讨论】:

    标签: .net vb.net com


    【解决方案1】:

    嗯,看起来 ProgId 不是“MyComNameSpace.MyComClass”。使用 Regedit.exe 查看注册表,它应该存在于 HKEY_CLASSES_ROOT 中。该密钥包含一个 CLSID 密钥,其中包含您的班级的 guid。该密钥应存在于HKLM\Software\Classes\CLSID\{guid} 中。其中包含由 Regasm.exe 编写的用于启动 CLR 并加载程序集的密钥。

    您可以看到 COM 客户端程序正在使用 SysInternals 的 ProcMon 实用程序搜索这些键,这是一种诊断缺失内容的好方法。

    您可以使用 [ProgId] 属性来选择自己的属性,而不是让它由 .NET 来选择。

    以防万一,仅仅因为您使用后期绑定并不意味着您可以跳过注册步骤。请务必在提升的命令提示符下使用 /codebase 选项运行 Regasm.exe 以获取注册的密钥。

    【讨论】:

    • 谢谢。我检查了注册表,它在那里显示为: MyComNameSpace.MyComNameSpace.MyComClass 我现在选择使用它,它工作得很好。现在我想知道我可能做了什么导致服务器/命名空间名称连续存在两次?
    • 我知道为什么我的命名空间翻了一番。我已将所有代码放在一个名为 MyComNameSpace 的单独文件中。问题已解决。
    猜你喜欢
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 2017-03-21
    • 2014-07-09
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    相关资源
    最近更新 更多