Hola chicos, si todavía está buscando una respuesta a esta prueba esto.
Ate los eventos de publicación y en una llamada de inserción exitosa a su comando externo. Estoy haciendo algo similar al construir la solución y luego activar el corredor de prueba MSpec (blog post).
Para hacer esto, necesita agregar un gancho para PublishEvents_OnPublishDone. Hacer esto de ir al Módulo EnvironmentEvents y addin lo siguiente:
<System.contextStaticAttribute()> Public WithEvents PublishEvents As EnvDTE80.PublishEvents
Private Sub PublishEvents_OnPublishDone(ByVal Success As Boolean) Handles PublishEvents.OnPublishDone
'call custom module sub here.
End Sub
Si sólo desea ejecutar el comando externo a veces hacer algo como esto. Crear la macro como esta:
Public runExternalCommandOnComplete As Boolean = False
Sub PublishAndRunExternalCommand()
DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
DTE.ActiveWindow.Object.GetItem("04 - Products\04 - Products.WSS").Select(vsUISelectionType.vsUISelectionTypeSelect)
DTE.ExecuteCommand("ClassViewContextMenus.ClassViewProject.Publish")
runExternalCommandOnComplete = True
End Sub
Luego, en EnvironmentEvents añadir lo siguiente: (Nota: CustomMacros es el nombre del módulo donde se coloca el código anterior)
<System.contextStaticAttribute()> Public WithEvents PublishEvents As EnvDTE80.PublishEvents
Private Sub PublishEvents_OnPublishDone(ByVal Success As Boolean) Handles PublishEvents.OnPublishDone
CustomMacros.runExternalCommandOnComplete = False
'Where ExternalCommand1 matches the command you want to run
DTE.ExecuteCommand("Tools.ExternalCommand1")
End Sub
Eso debería hacerlo.
Saludos,
Kyle
También estoy buscando una respuesta a esto. Me gustaría poder ejecutar una serie de instrucciones ExecuteCommand en una macro, pero sincrónicamente. –
Desafortunadamente todavía no sé una solución :( – TcKs