我正在尝试为构建我的应用程序编写一个宏,启动一个外部工具,并将调试器发送到该外部工具。
除了建筑外,一切正常。它构建,但它不会阻塞线程,因此外部工具在完成之前就会被踢掉。有没有办法可以运行ExecuteCommand并等待线程完成?
代码如下:
DTE.ExecuteCommand("ClassViewContextMenus.ClassViewProject.Build")
DTE.ExecuteCommand("Tools.ExternalCommand11")
Try
Dim dbg2 As EnvDTE80.Debugger2 = DTE.Debugger
Dim trans As EnvDTE80.Transport = dbg2.Transports.Item("Default")
Dim dbgeng(1) As EnvDTE80.Engine
dbgeng(0) = trans.Engines.Item("Managed")
Dim proc2 As EnvDTE80.Process2 = dbg2.GetProcesses(trans, "MINIPC").Item("_nStep.exe")
proc2.Attach2(dbgeng)
Catch ex As System.Exception
MsgBox(ex.Message)
End Try
答案 0 :(得分:0)
我相信这个帖子得到了解答:
答案 1 :(得分:0)
如果您将调试器附加到第一个进程,ClassViewContextMenus.ClassViewProject.Build,以及第二个进程可能会阻塞主机进程,直到第一个进程完成。或者以其他方式获取第一个进程的进程句柄并等待它退出。鉴于你正在做的聪明的调试器,我假设你会比我更了解如何做到这一点。