从VB6 DLL项目中调试C#.Net DLL项目

3
我有三个项目, 其中一个是VB6项目,编译为EXE。 另一个也是VB6项目,编译为DLL。 最后一个是.Net(2010)项目,编译为DLL。
.Net的DLL被引用在我的VB6 DLL项目中。 然后,得到的VB6 DLL项目被引用在我的VB6 EXE项目中。
在这种情况下,我如何调试我的.Net DLL项目?
无论我将(VB6 DLL)进程附加到我的.Net DLL项目上,还是将“开始外部程序”设置为我的VB6 DLL项目,都会失败(或无法调试)。
我必须更改我VB6 DLL项目上的引用(.Net DLL),以便进行调试吗?
欢迎您提供所有有效的意见。(请按照步骤解释所需的程序)
提前致谢。

哦,今天我学到了一个新知识,原来可以从VB6引用.NET dll。这是怎么实现的呢?是通过COM吗? - rein
谢谢Hans,那篇文章帮助我以不同的方式思考,并解决了我的问题。 - user2197320
3个回答

1
你应该能够通过在“调试”下设置启动操作来调试C#.NET dll,设置为“启动外部程序”,并将VB6可执行文件指定为程序。
我知道这个方法可行,因为我用它来调试一个旧的VB6应用程序的.NET/C#插件。
无论你需要经过多少其他dll(.NET或其他)才能到达你想要调试的代码,都不应该有影响。

我在“启动外部程序”中指定了VB6.EXE,并在命令行参数中尝试了两个项目(一个接一个)(VB6 DLL项目和VB6可执行项目)...但都失败了。 - user2197320

1

啊,VB6 :) 好久不见了....

基本上,你不能在VB6 IDE中调试.NET代码。

然而,你可以创建一个.NET测试项目来单元测试.NET dll。这是在将其引用到VB6之前应该完成的工作。

如果你需要追踪特定问题,另一种方法是在dll处于调试模式时将调试信息写入文件/数据库/事件视图等中,例如哪些函数被调用、参数、堆栈跟踪...


-4

这可能不正确,但我相信VB 2010使用的是什么?.NET 4.0,对吧?VB6是在1994年创建的,所以它应该是<= .NET 1.0。二进制文件很可能不兼容。


.Net DLL可以公开COM接口,使它们可以在VB6应用程序中使用。 - Andrew Cooper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接