2013-04-12 51 views
-1

我创建了一个VS 2010类库。为Com可见性标记组件。用强大的钥匙在大会上签字。创建我的课程,让我的入门点方法可用。VS 2010程序集中的COMVisible类仍然不可见通过com

该库在C#中的测试项目中正常工作。

我regasm类库到GAC,通过: C:\ WINDOWS \ microsoft.net \框架\ v4.0.30319 \ regasm testdll.dll/TLB:testdll.tlb /代码库

包含的TLB文件作为我的VB6项目的参考。我通过资源'浏览'找到它,所以它在那里。

当我尝试实例化类......它的空。不应显示应通过公共课程提供的公共方法。

Dim objTest as testdll.testclass 
set objTest = new testdll.testclass 

objTest.testmethod <--- this 'testmethod' doesn't display in intellisense... nothing does. 

另外我打过电话通过创建对象的“testdll.testclass”,我得到的错误“ActiveX组件不能创建对象”

现在我有其他的项目,我已经做了COM能见度我试着比较差异,但我没有看到任何。我不明白为什么它不起作用。

任何线索?非常多。

+0

你REGSVR32的.TLB?我也不明白,但我仍然可以使用这种类型。 – ken

+0

嗯......我需要添加一个界面吗?我没有在我的其他项目中这样做,它的工作原理......我正在阅读另一篇文章,这篇文章谈到了这件事。 – user1161137

+0

你不能regsvr32一个TLB ...不是什么Regasm在做什么? – user1161137

回答

1

只需使用一个接口...一个定义或使用[ClassInterface(ClassInterfaceType.AutoDual) 有评论在网上,你可以发现,表明不使用autodual,但如果你控制的完整使用您的图书馆,它似乎是一个'好'的方式去。

我尝试了各种方法来模拟/理解为什么我的一个项目不需要一个界面可以被vb项目看到而没有成功。我原本以为也许可能是因为该项目实现了一个IDisposable接口(在C#项目中使用的唯一接口,com com可见),但这并不是原因。无论如何,我不想浪费其他人的时间。感谢您的回应。

此链接提供关于这个问题的充足信息: http://anturcynhyrfus.blogspot.com/2011/03/creating-com-visible-c-component.html