使用“注册 COM 互操作”编译的 C# 类出现运行时错误“429”?

问题描述 投票:0回答:2

我想创建一个可以在 Vb6 项目中使用的 VS2010 c# 类。我在下面完成了简单的 C# 类,并在构建属性中勾选了“注册 com 互操作”。在 Vb6 项目中,我可以看到 ComTestC 的参考,但是当我运行 vb6 代码时,我得到:

运行时错误“429”ActiveX 组件无法创建对象

我错过了让这个 Com 对象工作的明显步骤吗?

Vb6代码

Private Sub Command1_Click()

Dim foo As Object
Set foo = CreateObject("ComTestC.Numbers")

End Sub

C# 代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace ComTestC
{
    public class ComTestC
    {

        [Guid("8b8d1e17-fc8e-4316-afb7-394a5da56801")]
        [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
        public interface _Numbers
        {
            [DispId(1)]
            int GetDay();

        }

        [Guid("68d6c981-66dd-4731-93a0-2c39bd86495f")]
        [ClassInterface(ClassInterfaceType.None)]
        [ProgId("ComTestC.Numbers")]
        public class Numbers : _Numbers
        {
            public Numbers() { }

            public int GetDay()
            {
                return (DateTime.Today.Day);
            }

        }


    }
}
c# vb6 com-interop
2个回答

0
投票

项目 + 属性、应用程序选项卡、程序集信息按钮、 勾选“使程序集 COM 可见”选项。你很可能会得到一个 接下来编译错误,你必须运行 VS 提升,这样类才能 已注册。

汉斯·帕桑特 2013 年 12 月 26 日 15:22

© www.soinside.com 2019 - 2024. All rights reserved.