【问题标题】:How do I use a .NET .DLL file or library in VB6?如何在 VB6 中使用 .NET .DLL 文件或库?
【发布时间】:2011-05-01 06:14:34
【问题描述】:

我只是想知道在执行此操作时是否应该知道一些事情,或者只要在客户端上安装了 .NET 框架,它是否会直接工作?

我问是因为当我尝试这样做时,VB6 的引用对话框说“无法注册那个 dll”

谢谢

【问题讨论】:

    标签: .net vb.net com vb6 interop


    【解决方案1】:

    在“Assembly Information”部分有一个项目设置“Make assembly COM-Visible”。请务必勾选。

    【讨论】:

    • 仅供参考 - 亚当·内森的书是关于这个主题的圣经
    【解决方案2】:

    在其他答案的基础上,.NET DLLS,即使它们公开 COM 对象以供使用,如其他答案中所述,请勿包含嵌入式类型库,因此不幸的是,您在处理时无法使用您习惯的东西使用 COM 库,RegSvr32.exe。

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

    【讨论】:

    • 谢谢,regasm 只是 regsvr32 的 .net 版本,它注册 .dll 用于 Windows 范围识别(或 GAC),或者它只是一个创建 VB6 可以理解的类型库的进程.net .dll 有问题?谢谢博士 :) (赞成)
    • 没问题。 Regasm 实际上确实在注册表中注册了 DLL 的 COM 接口等,以便其他 COM 应用程序可以使用它。如果您在 Visual Studio 的编译屏幕上检查了 COM 选项,则 VS 编译器会在您编译应用程序时生成 TLB 文件和其他互操作文件
    【解决方案3】:

    您必须将其转换为 COM dll。 Regasm dll 并使用它。使用 comvisible 属性。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 我意识到我已经有一段时间没有回答这个问题了,但从那以后我从 Mike Strong 那里遇到了这个问题:你可以看到所有暴露为(后期绑定)的 .NET 系统类ActiveX 对象从注册表中的 HKEY_CLASSES_ROOT\System.AccessViolationException 到 HKEY_CLASSES_ROOT\System.Version 找到您可能感兴趣的内容后,可以在 MSDN 中查找。可能值得研究。
      • 感谢伙伴,肯定有用的信息!并且只是补充一下,我总是查看旧帖子,看看是否有任何新信息/cmets 添加到他们大声笑,甚至有时自己添加其他内容。很抱歉和我一起把你扔到公共汽车下,但我认为这将我们提升到超级极客等级(哈哈),我认为应该有“老邮报巨魔”的徽章,也许正是这样称呼:)。跨度>
      猜你喜欢
      • 2011-12-01
      • 2011-07-17
      • 1970-01-01
      • 2019-03-03
      • 2012-09-10
      • 1970-01-01
      • 2020-04-16
      • 1970-01-01
      • 2021-07-17
      相关资源
      最近更新 更多