Hé les gars, si vous êtes toujours à la recherche d'une réponse à celle-ci essayer. Liez dans les événements de publication et sur un appel réussi avec succès votre commande externe. Je fais une chose similaire avec la construction de la solution, puis le tir du lanceur de test MSpec (blog post).
Pour cela, vous devez ajouter un hook pour PublishEvents_OnPublishDone. Pour ce faire, en allant au EnvironmentEvents Module et Addin les éléments suivants:
<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 vous voulez seulement exécuter la commande externe font parfois quelque chose comme ça. Créez votre macro comme ceci:
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
Puis en EnvironmentEvents ajouter ceci: (Note: CustomMacros est le nom du module où vous mettez le code ci-dessus)
<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
Cela devrait le faire.
Cheers,
Kyle
Je cherche aussi une réponse à cela. J'aimerais pouvoir exécuter une série d'instructions ExecuteCommand dans une macro, mais de manière synchrone. –
Malheureusement je ne sais pas encore une solution :( – TcKs