使.NET程序集COM可见并适用于VB5

时间:2010-04-02 21:47:07

标签: .net com comvisible vb5

我有一个程序集,我已经设法使VB6可见并且它可以工作,但是在使用VB5时遇到了同样的问题。

对于VB6,我构建了程序集,使其可见COM,将其注册为COM对象等,并且程序集显示在VB6的References列表中,并允许我成功使用它。对象浏览器还显示了assy中的方法。我将程序集及其TLB复制到用于VB5开发的虚拟工作站,并运行Regasm,显然是成功的:

C:\>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
\regasm arserviceinterface.dll /tlb:arserviceinterface.tlb
Microsoft (R) .NET Framework Assembly Registration Utility 2.0.50727.3053
Copyright (C) Microsoft Corporation 1998-2004.  All rights reserved.

Assembly exported to 'C:\Projects\AR\3rd Party\ARService\arserviceinterface.tlb'
, and the type library was registered successfully

请注意,虚拟W / S是Win2k,并且没有.NET Fx 3.5,只有2.0。

程序集显示在可以在VB5中选择的引用中,但程序集的方法没有显示在对象浏览器中,并且通常无法使用。有一个步骤要做,我还没有做,或VB5不知道如何使用这样的COM对象。请注意,VB5安装程序位于虚拟工作站上,而不是安装VB6的同一工作站。

有什么想法吗?我遇到的一件事是,我可能需要在有问题的工作站上生成并使用强名称,但是......

1 个答案:

答案 0 :(得分:4)

  1. 确保您的程序集不是针对并使用.Net 3.5
  2. 中的功能构建的
  3. 复制OLE / COM对象查看器工具(您可以从安装了Windows SDK的计算机上获取它)。运行它,转到查看所有对象,向下滚动列表到您的对象,然后右键单击它以创建一个实例 2.1如果OLE / COM对象查看器无法创建实例,则问题在于如何在计算机上注册对象,或者如何安装.Net。
    2.2如果OLE / COM对象查看器可以创建实例,则问题在于VB5的使用方式。
  4. 我不记得VB5是否实际上支持早期绑定(IUnknown - 基于对象)或者是否仅支持后期绑定(IDispatch)。我怀疑VB5只支持调度接口,而VB5.5引入了对IUnknown的支持。这可能是你的问题。