【发布时间】:2025-12-01 11:50:01
【问题描述】:
我已经被这个问题困扰了几个小时了。我希望有人遇到过类似的问题。
我们使用 VS2010 开发了一个原型 .Net(C#) dll,并希望能够在 C# 应用程序和 VB6 应用程序中调用此 dll。
我的问题是:
是否可以调试调用 .Net dll 的 VB6 应用程序?我收到一条错误消息“自动化错误系统找不到指定的文件”
错误消息表明我的 VB6 应用程序缺少某些东西来查找 .Net dll。
我知道如果VB6应用程序已经编译,并且.exe已经创建,VB6在使用.exe时会成功调用.Net dll功能
然而,重要的是我们可以通过我们的 VB6 应用程序进行调试。不幸的是,调试不允许您跳过实例化 .Net DLL 的类对象的代码行。我似乎无法做到这一点。
注意:我查看了论坛和 MSDN 文档,主要是找到在 .NET 中调用 VB6 dll 的解决方案;不幸的是,这与我们需要做的相反。
注意:我已经注册了编译好的 .Net(C#) 程序集,并在 VB6 项目中引用了它。
然而,我找到了这两个页面,这似乎是我们需要的,但它是调用使用 VS2005 生成的 .NET(c#) dll 的解决方案。当使用 VS2010 生成 .NET(C#) dll 时,这似乎不起作用。
如果有人可以提供任何建议或指导我到可以找到的地方,那就太好了。
谢谢
解决方案 感谢@HansPassant,我找到了解决方案。 要调试包含 C# .NET 程序集的 VB6 项目,您需要通过“regasm”和“gacutil”注册 .NET dll,然后确保关闭并在开始调试之前重新打开 VB6 应用程序。
【问题讨论】:
-
如果我正确理解您的问题,您想从 VB 6 端(即从 VB 6 IDE)进行调试吗?这是不可能的——VB 6 调试器仅与 VB 6 代码一起工作。它根本无法处理本机代码,当然也无法处理 MSIL (.NET) 代码,因为当 VB 6 出现时,它甚至还没有被发明出来。
-
我猜这取决于你用来编译它的 .Net 框架。你发现的例子是相反的,因为 Visual Studio 版本试图保持向后兼容性
-
哇好点@CodyGray。我没看出来,你是对的
-
将 .NET 对象重新声明为“作为对象”(暂时),应该会更好。
-
@Arvo:为什么?你认为它现在被宣布为什么?为什么将其更改为
As Object使其“工作得更好”?这将如何让您从 VB 6 进入本机/MSIL 代码?
标签: c# .net visual-studio-2010 debugging vb6