如何调试vs vc6 / vba app调用的2008 c#express dll?

时间:2009-08-18 02:23:49

标签: c# debugging vb6 com-interop visual-studio-express

我有一个c#dll,它被编写为一个包装器,用于从数据源获取数据并将其传递给vba / powerpoint ppa应用程序。我对vba没有多少经验,这就是为什么我用vb6模拟这个,我知道的更多。

我现在有足够的问题试图理解语法,什么不适用于com和ccw的错综复杂的工作方式。所以我正在寻找一种方法来调试为什么函数没有返回任何数据,并且如果可能的话,当vb6应用程序调用它时,会有逐行的.net dll演练。

最初我想在.net dll中放入一个函数,该函数将写入外部文件,但这似乎不起作用,我不知道为什么。

i did some googling并发现有一个附加到进程可能对我的情况有用,但该功能是only available in vs studio full versio n。

所以我希望有其他工具,我可以使用的方法可以让我正确调试vb6 / vba应用程序和.net dll之间发生的事情。

感谢。

4 个答案:

答案 0 :(得分:7)

您无法使用太糟糕的附加程序,因为这是可行的方法。

.net dll中放置良好的Debug.Assert(false);是强制调试器显示的一种方法。

您还可以尝试使用Debugger.Break();强制断点并询问您是否要附加调试器。

DebugDebugger都位于System.Diagnostics命名空间中。

答案 1 :(得分:3)

  1. 在Visual Studio中打开C#项目的项目属性。
  2. 转到“调试”页面。
  3. 选择“启动外部程序”并浏览到VB.exe(很可能是C:\ Program Files \ Microsoft Visual Studio \ VB98 \ VB6.EXE。
  4. 可选:在命令行参数中输入VB6项目的.vbp文件的路径。
  5. 运行C#项目(Debug-> Start Debugging或F5)时,它将启动VB6。您可以在C#项目中放置所需的任何断点。当您启动VB6项目时,调试器将停在VS2005 / 2008断点处。您还可以使用立即窗口以及调试C#项目时的任何其他调试选项。

答案 2 :(得分:2)

添加此

<StartAction>Program</StartAction>
<StartProgram>C:\Program Files\NUnit-Net-2.0 2.2.8\bin\nunit-gui.exe</StartProgram>

到我的C#Express 2008项目的.csproj文件,在PropertyGroup元素下,为我做了诀窍 (details here)。

答案 3 :(得分:0)

在Visual C#Express Edition之上下载并安装Visual C ++ Express Edition。两者都是完全免费的,这将使您能够在调试器中“附加到进程”