Вопрос

Нашему серверу сборки требуется слишком много времени для создания одного из наших проектов на C ++.Он использует Visual Studio 2008.Есть ли какой-нибудь способ заставить devenv.com регистрировать время, затраченное на создание каждого проекта в решении, чтобы я знал, на чем сосредоточить свои усилия?

Улучшенное аппаратное обеспечение в данном случае не является вариантом.

Я попытался настроить детализацию вывода (в разделе Инструменты / Параметры / Проекты и решения / Сборка и запуск / Детализация вывода проекта MSBuild build).Похоже, это не оказывает никакого эффекта в IDE.

При запуске MSBuild из командной строки (а для Visual Studio 2008 это должна быть MSBuild версии v3.5) в конце отображается общее время, прошедшее, но не в IDE.

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

В качестве альтернативы, поскольку мы фактически используем NAnt для управления процессом сборки (мы используем Jetbrains TeamCity), есть ли способ заставить NAnt сообщать мне время, затраченное на каждый шаг?

Это было полезно?

Решение

Меню ИнструментыОпцииПроекты и решенияНастройки проекта VC ++Время сборки должно сработать.

Другие советы

Перейдите в меню Инструменты → Параметры → Проекты и решения → Сборка и запуск → Детализация вывода сборки проекта MSBuild - установите значение "Обычный" или "Подробный", и время сборки появится в окне вывода.

Visual Studio с 2012 по 2017 год

  • Для проектов MSBuild (например,ВСЕ.Сетевые проекты):
    Щелчок Tools -> Options а затем выберите Projects and Solutions -> Build and Run.Изменение MSBuild project build output verbosity Для Normal.Таким образом, он будет отображать Время, прошедшее в каждом проекте решения, который он создает.Но, к сожалению, нет суммы затраченного времени по всему проекту.Вы также увидите метку времени начала сборки

  • ДЛЯ проекта C /C ++:

Щелчок Tools -> Options а затем выберите Projects and Solutions -> VC++ Project Settings.

Изменение Build Timing Для Yes.

Для Visual Studio 2012 вы могли бы использовать Монитор сборки расширение.

Если вы застряли на VS2005, вы могли бы использовать плагин vs-build-timer.По завершении сборки отображается общее затраченное время и (необязательно) сводка по каждой продолжительности проекта.

Отказ от ответственности;Я написал это.И да, мне нужно создать установщик...однажды!

Инструменты->Параметры-> Проекты и решения-> Сборка и запуск->

Установите значение "Детализация выходных данных MSBuild project build" с "Минимального" на "Нормальный".

Поскольку ваш вопрос связан с использованием DevEnv из командной строки, я бы также предложил использовать MSBuild (который может создавать файлы .sln без изменений).

msbuild /fl /flp:Verbosity=diagnostic Your.sln

msbuild /? я покажу вам другие полезные опции для filelogger.

Если вы хотите визуализировать свою сборку, вы можете использовать IncrediBuild.IncrediBuild теперь доступен в автономном режиме (не распространяется, но для использования только на 8 ядрах на вашем локальном компьютере) бесплатно как часть обновления 1 Visual Studio 2015

Отказ от ответственности:Я работаю в IncrediBuild

Я оказался здесь, потому что просто хотел, чтобы дата и время были включены в выходные данные сборки.Если другие ищут что-то подобное, это так же просто, как добавить echo %date% %time% к событиям до сборки и / или после сборки в рамках проекта, СвойстваСкомпилироватьСоздание событий.

Сначала выполните сборку и посмотрите, какой проект появляется первым в выходных данных сборки (Ctrl + Главная в окне вывода).Щелкните правой кнопкой мыши по этому проекту → Свойства проектаСкомпилироватьСоздание событийПредварительная сборкаecho ###########%date% %time%#############.

Поэтому каждый раз, когда вы видите результаты сборки (или во время сборки), делайте Ctrl + Главная в окне вывода.И где-то в этой области время и дата смотрят вам в лицо!

О, и, возможно, в конечном итоге вам придется добавлять эти детали во многие проекты, поскольку порядок сборки может измениться :)


Я нашел лучшее решение!###

ИнструментыОпцииПроекты и решенияСборка и запускДетализация выходных данных сборки проекта MSBuild = Нормальный (или выше Минимальный).Это добавляет время в начало / начало окна вывода. Ctrl + Главная в окне вывода следует выполнить.

Если мы хотим посмотреть, сколько времени занимает каждый проект, то Проекты и решенияНастройки проекта VC ++Время сборки = да.Это применимо ко всем проектам;"VC++" вводит в заблуждение.

Если вы хотите вызвать внешнюю программу, которая может отслеживать общее время сборки, вы можете использовать следующее решение для версии 2010 (и, возможно, старше).Приведенный ниже код использует CTime Кейси Муратори.Конечно, вы также можете использовать его для простой печати времени сборки.

Откройте обозреватель макросов и вставьте следующее, прежде чем End Module:

Dim buildStart As Date
Private Sub RunCtime(ByVal StartRatherThanEnd As Boolean)
    Dim Arg As String
    Dim psi As New System.Diagnostics.ProcessStartInfo("ctime.exe")
    If StartRatherThanEnd Then
        psi.Arguments = "-begin"
    Else
        psi.Arguments = "-end"
    End If
    psi.Arguments += " c:\my\path\build.ctm"
    psi.RedirectStandardOutput = False
    psi.WindowStyle = ProcessWindowStyle.Hidden
    psi.UseShellExecute = False
    psi.CreateNoWindow = True
    Dim process As System.Diagnostics.Process
    process = System.Diagnostics.Process.Start(psi)
    Dim myOutput As System.IO.StreamReader = process.StandardOutput
    process.WaitForExit(2000)
    If process.HasExited Then
        Dim output As String = myOutput.ReadToEnd
        WriteToBuildWindow("CTime output: " + output)
    End If
End Sub

Private Sub BuildEvents_OnBuildBegin(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildBegin
    WriteToBuildWindow("Build started!")
    buildStart = Date.Now
    RunCtime(True)
End Sub

Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone
    Dim buildTime = Date.Now - buildStart
    WriteToBuildWindow(String.Format("Total build time: {0} seconds", buildTime.ToString))
    RunCtime(False)
End Sub

Private Sub WriteToBuildWindow(ByVal message As String)
    Dim win As Window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)
    Dim ow As OutputWindow = CType(win.Object, OutputWindow)
    If (Not message.EndsWith(vbCrLf)) Then
        message = message + vbCrLf
    End If
    ow.OutputWindowPanes.Item("Build").OutputString(message)
End Sub

Ответ взят из здесь и здесь.

Параметры -> Проекты и решения -> Настройки проекта VC ++ -> Сроки сборки

enter image description here

Я создал расширение для измерения времени сборки и представления порядка событий в виде графика: Таймер сборки Visual Studio.

enter image description here

Он доступен на Visual Studio market place и работает для VS2015 и VS2017.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top