Любой способ заставить Visual Studio сохранить файл перед запуском внешнего инструмента?

У меня есть несколько внешних инструментов, настроенных для запуска Doxygen для меня, либо в текущем отображаемом файле, либо в текущем активном проекте.

Что досадно, нет возможности сохранить файл перед запуском инструмента в любом месте.

Итак, я забью некоторые блоки Doxygen, нажму на горячую клавишу, чтобы запустить Doxygen, перевернуться в Firefox, чтобы проверить выход, и, конечно же, это предыдущая версия.

Вздох.

Любые подсказки о том, как заставить это работать славным способом?

Ответ 1

Привыкнуть к удару Ctrl + S как можно чаще или даже лучше в VS: Ctrl + Shift + S. :)

(Серьезно. Я так привык это делать, Firefox регулярно всплывает в диалоговом окне "Сохранить как", чтобы сохранить этот сайт, потому что я нажал Ctrl + S, набирая ответы в SO.)

Ответ 2

Вы можете создать макрос VS, который сначала сохранит все файлы, а затем ваши внешние инструменты.

Ответ 3

Если вы используете Visual Studio 2012 или более позднюю версию, у вас больше нет макросов.

Я решил эту проблему, используя AutoHotKey script, чтобы заполнить этот пробел.

Вот как я это сделал:

SetTitleMatchMode, 2       ; Title matches if it contains string

#IfWinActive Visual Studio ; The shortcuts below this line are valid when Visual Studio is active
!s::                       ; Alt+s to activate the external tool
    SendInput ^s           ; Sends Ctrl+s to Visual Studio to save the file
    Sleep, 100
    SendInput ^!+\         ; Actual shortcut that activates the desired external tool
return
#IfWinActive               ; Shortcuts below this line will be global

Ответ 4

Я нашел решение для этого в VS2013 с помощью Visual Commander. Это дает вам возможность запускать макросы. Теперь вы можете создать макрос, который сохраняет все файлы, а затем запускает внешний инструмент, например.

Imports EnvDTE
Imports EnvDTE80
Imports Microsoft.VisualBasic

Public Class C
    Implements VisualCommanderExt.ICommand

    Sub Run(DTE As EnvDTE80.DTE2, package As Microsoft.VisualStudio.Shell.Package) Implements VisualCommanderExt.ICommand.Run
        DTE.ExecuteCommand("File.SaveAll")
        DTE.ExecuteCommand("Tools.ExternalCommand6" )
    End Sub
End Class

Теперь этот макрос можно добавить в панель инструментов или сочетание клавиш, а не напрямую запускать внешний инструмент.

Ответ 5

Использовать Visual Studio 2005. Он автоматически сохраняет все файлы перед запуском внешних инструментов.

(Я понимаю, что это вообще не будет полезно, но поскольку я использую как 2005, так и 2012 год, это одно из моих главных раздражений с 2012 годом)