Visual Studio Строит за день - PullRequest
       15

Visual Studio Строит за день

7 голосов
/ 25 февраля 2009

Есть ли способ записать количество сборок, выполненных в течение дня разработки в Visual Studio, или где-нибудь, где мы можем подключиться к метаданным?

Мне любопытно, сколько раз в среднем я строю / день * сколько времени занимает сборка ...

Есть мысли?

ОБНОВЛЕНИЕ: извините за отсутствие деталей ... и это упражнение чисто академическое

С решением, которое имеет 14 различных проектов (1 - веб-сайт). Я постоянно строю все решение (Ctrl + Shift + B). Было бы интересно узнать не только количество раз, которое я собрал в течение дня, но и сколько времени уходит на ожидание завершения сборки ...

Оптимальным решением будет решение, не требующее изменения самих проектов решения. (события до / после сборки) Я не хочу добавлять / отменять изменения до / после регистрации.

(решение nant / other звучит как ответ, я думаю, я мог бы сопоставить это с сочетанием клавиш и не оставлять VS для выполнения сборки)

Любые другие предложения?

Ответы [ 7 ]

10 голосов
/ 25 февраля 2009

Один из вариантов - создать пару сценариев на вашем любимом языке сценариев и добавить их к событиям до и после сборки настроек проекта.

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

Но, естественно, это будет работать только на уровне проекта и не будет автоматически во всех проектах.

4 голосов
/ 24 марта 2009

Используйте ваш макрос для создания нового макроса. Откройте новый макрос и отредактируйте модуль EnvironmentEvents (другой модуль можно оставить пустым). Вы можете использовать базу данных вместо файла.

Private BuildStopWatch As System.Diagnostics.Stopwatch = New System.Diagnostics.Stopwatch()

Private Sub BuildEvents_OnBuildBegin(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildBegin
    BuildStopWatch.Reset()
    BuildStopWatch.Start()
End Sub

Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone
    BuildStopWatch.Stop()
    DTE.ToolWindows.OutputWindow.ActivePane.OutputString("Build succeed in " & BuildStopWatch.Elapsed.TotalSeconds & " seconds.")
    Dim fileName As String = "D:\BuildTimes.txt"
    Try
        Dim streamWriter As StreamWriter
        If File.Exists(fileName) Then
            streamWriter = File.AppendText(fileName)
        Else
            streamWriter = File.CreateText(fileName)
        End If

        streamWriter.WriteLine(DateTime.Now.ToString() & "    " & "Build Time:" & BuildStopWatch.Elapsed.TotalSeconds)
        streamWriter.Close()
        streamWriter.Dispose()
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub
0 голосов
/ 29 апреля 2009

http://www.codeproject.com/KB/macros/Increment_Build_Number.aspx

Это сработало для меня, но обязательно импортируйте пространство имен System.IO в свой модуль EnvironmentsEvents, как предложил Шон.

0 голосов
/ 17 апреля 2009

Убедитесь, что ваш модуль EnvironmentsEvents импортирует пространство имен System.IO, чтобы иметь возможность доступа к вызовам StreamWriter и File.

0 голосов
/ 25 февраля 2009

VS позволяет вам подключаться только к событиям сборки на уровне проекта, поэтому, если этого недостаточно, вы можете использовать сценарий сборки (MSBuild, NAnt и т. Д.) Для создания решения, которое даст вам полный контроль над тем, что происходит раньше и / или после сборки.

Если честно, какую выгоду вы получите от этой статистики на локальной машине? Мы используем сервер сборки CCNET http://ccnet.thoughtworks.com/, который отслеживает время сборки и время модульного тестирования и запускается после фиксации в нашем контроле исходного кода SVN http://www.collab.net/downloads/subversion/ Я бы рекомендовал этот подход для сбора статистики.

0 голосов
/ 25 февраля 2009

Если вы создаете один и тот же проект каждый раз, вы можете легко написать небольшой скрипт для выполнения в разделе «Предварительная сборка задач» в свойствах вашего проекта (нажмите кнопку «Создать события» в нижней части компиляции вкладка страницы свойств).

0 голосов
/ 25 февраля 2009

Это может быть излишним, но вы можете написать свою собственную утилиту регистрации, чтобы записывать метаданные о сборке для каждого проекта. Следите за количеством сборок в этот день через класс журналирования.

См. эту ссылку о расширении ведения журнала MSBuild и эту ссылку о расширении MSBuild с помощью пользовательских задач.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...