Visual C# - 参考文献>添加参考...> COM:该列表是如何填充的?

时间:2013-07-01 04:14:25

标签: c# c++ com

我正在尝试在Visual C ++ 2010(Express)中开发COM组件,我希望能够从Visual C#2010(Express)程序中使用它。

我的COM DLL还没有完成,但是我定义了 DllRegisterServer DllUnregisterServer 函数,他们在HKEY_CLASSES_ROOT和子键中写了很多东西。在其他人中,我有以下钥匙:

HKEY_CLASSES_ROOT\My.Components.1\CLSID
    Default Value: {DB05EA30-0320-4D40-A530-6DEAD03D3850}

HKEY_CLASSES_ROOT\CLSID\{DB05EA30-0320-4D40-A530-6DEAD03D3850}
    Default Value: My Components
    Sub Key: InprocServer32
        Default Value: Absolute path of the .dll
        Threading Mode: Apartment
    Sub Key: ProgID
        Default Value: My.Components.1
    Sub Key: TypeLib
        Default Value: {DB05EA31-0321-4D41-A531-6DEAD03D3851}
    Sub Key: Version
        Default Value: 1.0

HKEY_CLASSES_ROOT\TypeLib\{DB05EA31-0321-4D41-A531-6DEAD03D3851}
    Sub Key: 1.0
        Sub Key: 0
            Sub Key: win32
                Default Value: Absolute path of the .tlb

Microsoft JScript能够尝试COM对象的实例化,但由于工厂不完整,所以只输出错误代码 DllGetClassObject

另一方面,Visual C#2010(或至少是Add Reference ...窗口)似乎没有注意到已注册的COM对象的存在,该对象未显示在列表中。我很清楚,这些对象只是安装的COM对象的一个​​子集。

COM对象将在什么时候出现?我错过了什么?

修改

我知道浏览标签,但我的印象是第一类注册的COM对象应该显示而不显式搜索它们,但也许情况并非如此。

1 个答案:

答案 0 :(得分:3)

Sub Key: 1.0

必须在类型库显示在COM选项卡中之前分配此键的默认值。它必须包含类型库的描述。样板短语是“Acme Foo Type Library 1.0”,其中“Acme”是您的公司名称,“Foo”是服务器或产品名称。

使用“浏览”选项卡是我的首选,COM选项卡太慢了。你会发现:)