Эй, ребята, если вы все еще ищете ответ на этот вопрос, попробуйте это.
Свяжитесь с событиями публикации и при успешном нажатии вызовите вашу внешнюю команду. Я делаю то же самое с созданием решения, а затем запускаю тестер MSpec ( сообщение в блоге ).
Для этого вам нужно добавить ловушку для PublishEvents_OnPublishDone. Сделайте это, зайдя в модуль EnvironmentEvents и добавив следующее:
<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
Если вы хотите запустить только внешнюю команду, иногда делайте что-то подобное. Создайте свой макрос так:
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
Затем в EnvironmentEvents добавьте это: (Примечание: CustomMacros - это имя модуля, в который вы поместили код выше)
<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
Это должно сделать это.
Приветствия
Кайл