1

我正在尝试为构建我的应用程序编写一个宏,启动一个外部工具,并将调试器附加到该外部工具。

一切都在工作,除了建筑物。它会构建,但不会阻塞线程,因此外部工具在完成​​之前就被启动了。有没有办法可以运行 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
4

2 回答 2

0

我相信这是在这个线程上回答的:

在预构建事件上运行 Visual Studio 2008 宏

于 2009-11-02T19:30:34.047 回答
0

如果将调试器附加到第一个进程 ClassViewContextMenus.ClassViewProject.Build 以及第二个进程,那么主机进程可能会阻塞,直到第一个进程完成。或者以其他方式获取第一个进程的进程句柄并等待它退出。考虑到你正在做的聪明的调试器的事情,我假设你会比我更清楚如何做到这一点。

于 2009-12-30T11:36:32.720 回答