Hey ragazzi, se siete ancora alla ricerca di una risposta a questo provare questo.
Collegati agli eventi di pubblicazione e su una chiamata push riuscita il tuo comando esterno. Sto facendo una cosa simile con la costruzione della soluzione e poi l'esecuzione del runner di test MSpec (blog post).
Per fare ciò è necessario aggiungere un hook per PublishEvents_OnPublishDone. A tale scopo, andando al modulo EnvironmentEvents e Addin il seguente:
<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
Se si desidera solo eseguire il comando esterno a volte fare qualcosa di simile. Crea il tuo macro in questo modo:
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
Poi nel EnvironmentEvents aggiungere questo: (Nota: CustomMacros è il nome del modulo in cui si inserisce il codice di cui sopra)
<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
Che dovrebbe farlo.
Cheers,
Kyle
fonte
2009-10-06 02:35:24
Sto anche alla ricerca di una risposta a questo. Mi piacerebbe essere in grado di eseguire una serie di istruzioni ExecuteCommand in una macro, ma in modo sincrono. –
Purtroppo non so una soluzione :( – TcKs