2009-10-06 9 views
1

J'essaye d'écrire une macro pour Construire mon application, en lançant un outil externe, et attachant le débogueur à cet outil externe.La macro Visual Studio 2008 pour le bâtiment ne bloque pas le thread

Tout fonctionne sauf le bâtiment. Il construit, mais il ne bloque pas le fil de sorte que l'outil externe soit éjecté avant qu'il ne puisse finir. Est-il possible que je puisse exécuter ExecuteCommand et attendre que le thread se termine?

code

est ci-dessous:

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 

Répondre

0

Si vous attachez le débogueur au premier processus, ClassViewContextMenus.ClassViewProject.Build, comme ainsi que la seconde alors probablement le processus hôte bloquerait jusqu'à ce que le premier processus soit terminé. Vous pouvez également saisir le handle de processus pour le premier processus d'une autre manière et attendre qu'il sorte. Étant donné les trucs de débogueur intelligent que vous faites, je suppose que vous sauriez comment faire mieux que moi.

Questions connexes