Отображение времени сборки в Visual Studio?
наш сервер сборки занимает слишком много времени, чтобы построить один из наших проектов c++. Он использует Visual Studio 2008. Есть ли способ получить devenv.com регистрировать время, необходимое для создания каждого проекта в решении, чтобы я знал, на чем сосредоточить свои усилия?
улучшенное оборудование в этом случае не является вариантом.
Я попытался установить детализацию вывода (в разделе Инструменты / Параметры / проекты и решения / сборка и запуск / MSBuild project build). Это не похоже имеют любой эффект в IDE.
при запуске MSBuild из командной строки (и для Visual Studio 2008 это должен быть MSBuild v3.5), он отображает общее время, прошедшее в конце, но не в IDE.
Мне очень нужен отчет о времени для каждого проекта в решении, чтобы я мог выяснить, где процесс сборки занимает свое время.
альтернативно, поскольку мы фактически используем NAnt для управления процессом сборки( мы используем JetBrains TeamCity), есть ли способ заставить Нэнта сказать мне, сколько времени требуется на каждый шаг?
12 ответов
меню инструменты → опции → проекты и решения → настройки проекта VC++ → Время Сборки должны работать.
перейдите в меню Инструменты → Параметры → проекты и решения → сборка и запуск → MSBuild project build output verbosity-установите значение "Normal" или "Detailed", и время сборки появится в окне вывода.
Visual Studio 2012 до 2017
для проектов MSBuild (например, все .Net-проекты):
НажмитеTools -> Options
и выберитеProjects and Solutions -> Build and Run
. ИзменитьMSBuild project build output verbosity
toNormal
. Таким образом, он будет отображать время, прошедшее в каждом проекте решения, который он строит. Но есть unfortunatily нет времени сумма за весь проект. Вы также увидите начало сборки Timestampдля проекта C / C++:
клик Tools -> Options
и выберите Projects and Solutions -> VC++ Project Settings
.
изменить Build Timing
to Yes
.
Если вы застряли на VS2005, вы можете использовать vs-build-таймер плагин. По завершении сборки отображается общее затраченное время и (необязательно) сводка по каждой из длительностей проекта.
отказ от ответственности; я это написал. И да, мне нужно создать установщик...один день!
Инструменты- > Параметры - >проекты и решения - >сборка и запуск ->
установите" MSBuild project build output verbosity "от" минимальный " до "нормальный"
поскольку ваш вопрос включает использование DevEnv из командной строки, Я бы также предложил использовать MSBuild (который может строить .sln файлы без изменений).
msbuild /fl /flp:Verbosity=diagnostic Your.sln
msbuild /?
покажет вам другие полезные опции для filelogger.
Если вы хотите визуализировать свою сборку, вы можете использовать IncrediBuild. IncrediBuild теперь доступен в автономном режиме (не распространяется, но для использования только на 8 ядрах на локальном компьютере) бесплатно как часть Visual Studio 2015 Update 1
отказ от ответственности: я работаю на IncrediBuild
я оказался здесь, потому что я просто хотел, чтобы дата и время включен в построение вывода. Если другие ищут что-то подобное, это так же просто, как добавить echo %date% %time%
к событиям Pre-build и/или Post-build в рамках проекта, свойства → Compile → События Построения.
сначала выполните сборку и посмотрите, какой проект появляется первым в выходных данных сборки ( Ctrl + дома в окне "вывод"). Щелкните правой кнопкой мыши этот проект → Свойства Проекта → Compile → События Построения → создать. И echo ###########%date% %time%#############
.
поэтому каждый раз, когда вы видите результаты сборки (или при сборке) делать Ctrl + дома в окне вывода. И где-то в этой области Время и дата смотрит на ваше лицо!
О, и вы можете добавить эти данные во многие проекты, поскольку порядок сборки может измениться:)
Я нашел лучшее решение! ###
инструменты → опции → Проекты И Решения → построить и запустить → MSBuild проект сборки вывода многословие = нормальный (или выше минимальный). Это добавляет время в начало / начало окна вывода. Ctrl + дома в окне вывода должны сделать.
Если мы хотим увидеть, сколько времени занимает каждый проект, то Проекты И Решения → настройки проекта VC++ → время сборки = да. Он применим ко всем проектам; "VC++" вводит в заблуждение.
Если вы хотите вызвать внешнюю программу, которая может отслеживать общее время сборки, вы можете использовать следующее решение для VS 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