我有一个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之间发生的事情。
感谢。
答案 0 :(得分:7)
您无法使用太糟糕的附加程序,因为这是可行的方法。
.net dll中放置良好的Debug.Assert(false);
是强制调试器显示的一种方法。
您还可以尝试使用Debugger.Break();
强制断点并询问您是否要附加调试器。
Debug
和Debugger
都位于System.Diagnostics
命名空间中。
答案 1 :(得分:3)
运行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。两者都是完全免费的,这将使您能够在调试器中“附加到进程”