c# - 调试调用 .Net(C#) dll 的 VB6 项目

标签 c# .net visual-studio-2010 debugging vb6

我已经被这个问题困扰了几个小时了。我希望有人遇到过类似的问题。

我们使用 VS2010 开发了一个原型(prototype) .Net(C#) dll,并希望能够在 C# 应用程序和 VB6 应用程序中调用此 dll。

我的问题是:

是否可以调试调用 .Net dll 的 VB6 应用程序?我收到错误消息“Automation Error The system cannot find the file specified

错误消息表明我的 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 时,这似乎不起作用。

site1 site2

如果有人可以提供任何建议或指导我去某个地方,我可以得到一个,那就太好了。

谢谢

解决方案 感谢@HansPassant,我找到了解决方案。 要调试包含 C# .NET 程序集的 VB6 项目,您需要通过“regasm”和“gacutil”注册 .NET dll,然后确保关闭并在开始调试之前重新打开 VB6 应用程序。

最佳答案

这不是问题,VB6 使用自己的调试器,不会妨碍任何其他调试器,包括用于 C# 代码的托管调试器。

您从 C# 类库项目开始,确保选择它作为启动项目。项目 + 属性,调试选项卡。选择“启动外部程序”选项并输入 VB6 IDE 的路径。通常为 c:\program files\microsoft visual studio\vb98\vb6.exe。在要调试的方法上设置断点。

按 F5,VB6 ide 将开始运行。加载或创建您的 vb6 项目。请注意如何在上一步中将路径添加到 .vbp 项目,以便它自动加载您的项目。

像往常一样开始调试您的 vb6 项目。一旦它开始使用您的 [ComVisible] C# 类,您的 C# 程序集就会被加载。当您的 vb6 代码调用该方法时,断点将命中。根据需要来回切换。请注意,您不能从 vb6 单步执行到 C# 代码,您必须设置断点以使调试器停止。

关于c# - 调试调用 .Net(C#) dll 的 VB6 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15361711/

相关文章:

c# - 如何将 C# 可为空的 int 转换为 int

.net - 默认情况下,F# 是否在内部使代码并行运行?

c# - Web API 中的手动模型验证

visual-studio-2010 - 如何选择 Visual SVN 作为我的源代码控制提供程序

c# - C# 应用程序启动时出现 fatal error

如果属性具有 null 值,尽管 JsonIgnoreCondition.WhenWritingNull,C# JsonSerializer.Deserialize 也会失败

c# - 为什么私有(private)字段是类型私有(private)的,而不是实例私有(private)的?

c# - dynamic.ToString() 意外行为

c# - 如果没有这样的键,我如何更改 Dictionary 以便它返回自定义默认值而不是抛出异常?

c# - Visual Studio 2010 : How to set build platform to Active(x86)?