2010-10-27 65 views

回答

4

建立在.NET DLLS的其他答案上,即使它们公开COM对象以供使用,如其他答案中所述,不要包含嵌入式typelib,因此不幸的是,您不能使用您以前使用过的处理COM库,RegSvr32.exe。

正如Anivas指出的,你必须使用RegAsm.exe来注册.net程序集(dll),然后VB6应该能够看到它(在你的VB6项目中添加一个对它的引用,使用对象浏览器来检查已经暴露了什么对象)。

+0

谢谢你,所以是regasm刚刚REGSVR32的.NET版本,注册.dll的Windows广泛认可(或GAC)或者它只是一个过程,创建一个VB6可以理解的.net .dll有问题的typelib?谢谢博士:)(upvoted) – 2010-10-27 16:52:22

+0

没问题。 Regasm实际上在注册表中注册了DLL的COM接口等,以便其他COM应用程序可以使用它。当编译你的应用程序时,VS编译器会生成TLB文件和其他互操作文件如果你在visual studio的编译屏幕上选中了COM选项 – DarinH 2010-10-27 22:06:20

3

你必须将其转换成一个COM DLL。 Regasm dll并使用它。使用comvisible属性。

+0

谢谢你的回答,(upvoted) – 2010-10-27 16:53:33

7

在“装配信息”部分有一个项目设置“Make assembly COM-Visible”。确保你打勾。

+0

谢谢你的回答,(upvoted) – 2010-10-27 16:52:51

+0

仅供参考 - 亚当森的书是关于这一主题的圣经 – pm100 2010-10-28 17:19:17

1

其他一些可能有用的信息:.Net DLL不是编译代码,它是用“中间语言”(IL)编写的。您可能会发现使用任何文本编辑器打开.Net DLL并查看它很有意思。

+0

感谢队友,upvoted :) – 2010-10-28 17:56:42

+0

我意识到自从我回答这个问题以来,但是从那以后我就从Mike Strong那里看到了这个问题:你可以看到所有的.NET系统类以HKEY_CLASSES_ROOT \ System.AccessViolationException到HKEY_CLASSES_ROOT \ System.Version 一旦你找到了你可能感兴趣的东西,你可以在MSDN中查找它。 值得一看。 – BobRodes 2012-01-27 23:20:57

+0

感谢队友,肯定有用的信息!只是为了补充,我总是看看旧帖子,看看是否有任何新信息/评论添加到他们大声笑,甚至有时自己添加额外的东西给他们。对不起,把我扔在公共汽车下,但我认为这会将我们升级为超级怪胎级(lol),我认为应该为“旧帖子”提供徽章,或许正是这样做:)。 – 2012-02-01 12:51:04