Мне удалось сделать это, выполнив следующие шаги:
- Выберите Инструменты> Макросы> Макросы IDE из IDE VS 2010.
- Это должно представить вам пустуюIDE с Project Explorer слева
- Разверните MyMacros и дважды щелкните EnvironmentEvents
. Это даст вам файл, настроенный для обработки событий IDE.Перед последним End Module
в файле добавьте следующий код:
Private Sub SolutionEvents_BeforeClosing() Handles SolutionEvents.BeforeClosing
DTE.ExecuteCommand("File.Commit")
End Sub
Это выполнит действие фиксации до закрытия решения (что произойдет до закрытия Visual Studio), но VS не ожидаетзафиксируйте окно, чтобы закрыть его.Это не идеально, так как это означает, что вам придется перезагрузить решение, если вы хотите внести какие-либо изменения перед фиксацией.
Альтернативным решением будет обработка события QueryCloseSolution
и запросПользователь, если они хотят зафиксировать свои изменения перед закрытием.Если они ответят «Да», то вы отмените закрывающее решение (установив переданное логическое значение равным True
) и позвоните DTE.ExecuteCommand("File.Commit")
.Тогда это оставит решение открытым, пока вы выполняете коммит, но будет спрашивать вас, хотите ли вы фиксировать каждый раз, когда закрываете решение.
Дальнейшее принятие этого решения потребует запуска hg status
из события QueryCloseSolution
чтобы проверить, есть ли ожидающие изменения, прежде чем спрашивать пользователя, хотят ли они зафиксировать свои изменения.