【问题标题】:Why no intellisense in VB6?为什么在 VB6 中没有智能感知?
【发布时间】:2014-01-23 05:43:01
【问题描述】:

我在VS2012中用C#写了一个DLL:

namespace COMTest
{
    public class MyClass
    {
        public int Fun()
        {
            return 3;
        }
    }
}

然后我设置“Make Assembly COM Visible=True”,并在“构建”页面中设置“注册 COM 以进行间作”。然后新建一个VB6项目,添加对生成的dll文件的引用但是失败了……后来试了tlb文件成功了但是说“a”后没有intellisense。 (没有“有趣”的提示)

Dim a As MyClass
Set a = New MyClass
MsgBox (a.Fun())

所以我的问题是:

1) 为什么我必须引用 tlb 文件而不是 dll 文件? 2) 为什么没有智能感知?

【问题讨论】:

    标签: com vb6


    【解决方案1】:

    尝试勾选:

    Tools->Options->Editor->Auto List Members
    

    如果这样做没有帮助,那么要解决此问题,请使用要在 TLB 中公开的方法和属性定义一个公共接口,然后在类中实现该接口。此外,将ClassInterface (ClassInterfaceType.None) 属性添加到类。在开发组件时,您可以使用这种方法来避免使用ComVisible(False) 属性。

    您可以了解更多详情here

    【讨论】:

    • 那你能告诉我为什么直接引用“tlb”而不是“dll”吗?
    • 点击提供的链接了解更多详情
    • 看了链接,还是不知道为什么要用TLB而不是dll……:(
    • tlb 为类型库,包含组件中对象的接口描述。 dll 包含组件中对象的实际实现。鉴于此信息,您认为智能感知将使用哪些文件? :)
    猜你喜欢
    • 2011-09-29
    • 1970-01-01
    • 2013-04-11
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    相关资源
    最近更新 更多