温馨提示:本文翻译自stackoverflow.com,查看原文请点击:vb6 - Automation Error when instantiating a .Net COM visible class
.net com-interop vb6

vb6 - 实例化.Net COM可见类时出现自动化错误

发布于 2020-04-22 16:57:20

我用这个简单的类创建了一个COM-interop .dll:

using System.Runtime.InteropServices;

namespace ClassLibrary1
{
    [ComVisible(true)]
    [Guid("795ECFD8-20BB-4C34-A7BE-DF268AAD3955")]
    public interface IComWeightedScore
    {
        int Score { get; set; }
        int Weight { get; set; }
}

[ClassInterface(ClassInterfaceType.None)]
[Guid("9E62446D-207D-4653-B60B-E624EFA85ED5")]
public class ComWeightedScore : IComWeightedScore
{

    private int _score;

    public int Score
    {
        get { return _score; }
        set { _score = value; }
    }
    private int _weight;

    public int Weight
    {
        get { return _weight; }
        set { _weight = value; }
    }

    public ComWeightedScore()
    {
        _score = 0;
        _weight = 1;
    }
  }

}我使用以下命令注册了它:C:\ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ regasm C:\ ComClasses \ Classlibrary1.dll / tlb:Classlibrary1.tlb

最后,我成功地添加了对.dll的引用,此后VB6给了我对该对象的智能感知。

Private Sub Form_Load()
    Dim score1 As ComWeightedScore

    Set score1 = New ComWeightedScore
    score1.Score = 500

End Sub

在线上Set score1=new ComWeightedScore出现异常“自动化错误”。

几乎没有比这更简单的了……错误在哪里?!

查看更多

提问者
Dabblernl
被浏览
16
Hans Passant 2011-08-29 08:15

您忘记了Regasm.exe命令行中的/ codebase选项。

没有它,您将必须对程序集进行强命名,然后使用gacutil.exe将其放入GAC。在客户端计算机上的好主意,而不是在您的计算机上。