понедельник, 21 февраля 2011 г.

VsBuildStatus add-in для MSVC или "Время == деньги"

Обычно, когда мне нужно сбилдить большой солюшн, я запускаю билд, сворачиваю Visual Studio и дальше занимаюсь своими делами на компьютере. Допустим, солюшн билдится минут 20, и я это знаю и считаю, что у меня есть свободных 20 минут посидеть в инете или почитать книжку. Но я не знаю, что в код закралась синтаксическая ошибка, соответственно билд свалился, но я об этом узнал только спустя 20 минут, когда решил, что пора снова начинать работать. Или же я как дурачек через каждые 2-3 минуты открываю студию и смотрю, а не свалилось ли че-нить. И в том, и в другом случае я теряю драгоценное время - в первом на то, чтобы снова запустить сборку, во втором я тупо не могу в течении 20-ти минут на что нибудь спокойно отвлечься.

VsBuildStatus add-in для Visual Studio - это прекраснейшее средство мониторинга процесса сборки. Он выглядит как окошко-тулбар, которое открывается, когда вы запускаете build/clean/rebuild, и содержит список проектов Вашего солюшна. Для каждого проекта отображается прогресс - это особенно удобно, когда у вас многопроцессорная система и несколько проектов собираются одновременно. Также отображается общий прогресс, исходя из которого Вы можете приблизтельно прикинуть сколько времени осталось, и спокойно себе пить кофе и сёрфать по Хабру, к примеру.



Также в окне отображаются проекты которые уже были собраны, какие еще нет, какие собрались с ошибками.

Но самая вкуснятина досталась счастливым обладателям Window 7 - при сворачивании Vusual Studio, прогресс сборки отображается прямо в значке студию на тулбаре.



Если в процессе сборки была выявлена ошибка, это будет сразу же отображено в строке прогресса.


Красотища? Определённо! Теперь можно и вовсе не отвлекаться на то, чтобы открывать-закрывать IDE!

И напоследок - least but not last - еще одна приятная плюшка. Макрос для Visual Studio, который автоматически прекращает сборку при обнаружении первой ошибки

Private Sub OutputWindowEvents_OnPaneUpdated(ByVal pPane As OutputWindowPane) Handles OutputWindowEvents.PaneUpdated
        If Not (pPane.Name = "Build") Then Exit Sub

        Dim foundError As Boolean = pPane.TextDocument.StartPoint.CreateEditPoint().FindPattern(": error")
        Dim foundFatal As Boolean = pPane.TextDocument.StartPoint.CreateEditPoint().FindPattern(": fatal error")

        If foundError Or foundFatal Then
            DTE.ExecuteCommand("Build.Cancel")
        End If
    End Sub


    Private Sub BuildEvents_OnBuildProjConfigDone(ByVal Project As String, ByVal ProjectConfig As String, ByVal Platform As String, ByVal SolutionConfig As String, ByVal Success As Boolean) Handles BuildEvents.OnBuildProjConfigDone

        If Success = False Then
            DTE.ExecuteCommand("Build.Cancel")
        End If

    End Sub

Задеплоить макрос очень просто:
  1. В IDE выбираем в меню Tools->Macros->Macro IDE(или Alt+F11)
  2. В открывшемся Macro IDE в Project Explorer раскрываем список Samples
  3. В списке Samples открываем Environment Events и копипастим текст макроса между маркерами Begin Module и End Module
  4. Сохраняем
  5. PROFIT!

Ссылки:

Комментариев нет:

Отправить комментарий