Frage

Unser Build-Server dauert zu lange einen unserer C ++ Projekte zu bauen. Es verwendet Visual Studio 2008. Gibt es eine Möglichkeit devenv.com zu bekommen, die Zeit jedes Projekt in der Lösung zu bauen genommen zu protokollieren, so dass ich weiß, wo meine Bemühungen konzentrieren?

Verbesserte Hardware ist keine Option in diesem Fall.

Ich habe versucht, die Ausgabe Ausführlichkeit Einstellung (unter Extras / Optionen / Projekte und Lösungen / Build und Run / MSBuild Projekt Build-Ausgabe Ausführlichkeit). Dies scheint keine Auswirkungen in der IDE zu haben.

Wenn MSBuild von der Befehlszeile ausgeführt wird (und für Visual Studio 2008, braucht es MSBuild v3.5 zu sein), es zeigt die Gesamtzeit am Ende abgelaufen ist, aber nicht in der IDE.

Ich wollte wirklich eine zeit genommen Bericht für jedes Projekt in der Lösung, so dass ich herausfinden konnte, wo der Build-Prozess seine Zeit nahm.

Alternativ kann, da wir NAnt tatsächlich nutzen den Build-Prozess zu fahren (wir benutzen Jetbrains Teamcity), ist es eine Möglichkeit, NAnt, um mich für jeden Schritt unternommen, um die Zeit zu erzählen?

War es hilfreich?

Lösung

Menü Extras Optionen Projekte und Lösungen VC ++ Projekteinstellungen Build-Timing sollte funktionieren.

Andere Tipps

Gehen Sie

auf Extras → Optionen → Projekte und Lösungen → Erstellen und Ausführen → MSBuild-Projekt Build-Ausgabe Ausführlichkeit -. Auf „Normal“ oder „Detailed“, und die Build-Zeit wird im Ausgabefenster erscheint

Visual Studio 2012 bis 2017

  • Für MSBuild Projekte (zum Beispiel alle .NET-Projekte):
    Klicken Sie Tools -> Options und dann Projects and Solutions -> Build and Run wählen. Ändern MSBuild project build output verbosity Normal. So wird es Abgelaufene Zeit in jede Lösung Projekt zeigt sie baut. Aber es gibt keine unfortunatily Abgelaufene Zeit Summe über alle Projekt. Sie sehen auch die Build-gestartet Zeitstempel

  • für C / C ++ Projekt:

Klicken Sie Tools -> Options und wählen Sie dann Projects and Solutions -> VC++ Project Settings.

Ändern Build Timing Yes.

Für Visual Studio 2012 können Sie den -Monitor Bauen Erweiterung.

Wenn Sie auf VS2005 stecken könnten Sie die verwenden vs-build-Timer-Plugin . Bei Beendigung eines Build zeigt es die gesamte Zeit genommen und eine (optional) Zusammenfassung der einzelnen Projektlaufzeiten.

Haftungsausschluss; Ich schrieb es. Und ja, ich brauche einen Installer zu erstellen ... einen Tag!

Extras-> Optionen-> Projekte und Solutions-> Erstellen und Ausführen ->

Stellen Sie "MSBuild Projekt Build-Ausgabe Ausführlichkeit" von "Minimal" auf "Normal"

Da Ihre Frage devenv von der Kommandozeile beinhaltet die Verwendung, würde ich auch mit vorschlagen MSBuild (die Dateien ohne Modifikation bauen SLN kann).

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

msbuild /? werden Sie andere nützliche Optionen für die Filelogger zeigen.

Wenn Sie Ihren Build visualisieren Sie IncrediBuild verwenden können. IncrediBuild ist jetzt auch in der Standalone-Modus (nicht verteilt, sondern nur für die Verwendung auf 8 Kerne auf dem lokalen Computer) kostenlos als Teil von Visual Studio 2015 Update 1

Disclaimer: Ich arbeite für IncrediBuild

ich hier gelandet, weil ich nur das Datum und die Zeit, die in der Build-Ausgabe wollte. Sollten andere für ähnlich etwas gesucht werden, es ist so einfach wie das Hinzufügen echo %date% %time% zum Pre-Build und / oder Post-Build-Ereignisse unter Projekt, Eigenschaften Compile Build Event .

Sie einen Build erster und sehen, welches Projekt zuerst in der Build-Ausgabe erscheinen ( Strg + Home im Ausgabefenster). Rechtsklick auf das Projekt → Projekteigenschaften Compile Build Events Pre-build . Und echo ###########%date% %time%#############.

Also jedes Mal, wenn Sie Ergebnisse sehen bauen (oder während des Build) tun Strg + Home im Ausgabefenster. Und irgendwo in diesem Bereich der Zeit und das Datum Blicken auf Ihrem Gesicht!

Oh, und Sie könnten am Hinzufügen dieser Details zu viele Projekte beenden, wie die Build-Reihenfolge ändern können:)


Ich fand eine bessere Lösung! ###

Extras Optionen Projekte & Lösungen Build und Run MSBuild Projekt Build-Ausgabe Ausführlichkeit = normal (oder höher Minimal ). Dadurch wird die Zeit am Anfang / Anfang der Ausgabefenster. Strg + Home in dem Ausgabefenster tun soll.

Wenn wir sehen wollen, wie viel Zeit jeder Projekte nehmen dann Projekte & Lösungen VC ++ Projekteinstellungen Build-Timing = yes . Sie gilt für alle Projekte; "VC ++" ist irreführend.

Wenn Sie ein externes Programm aufrufen wollen, dass Ihre Gesamt Bauzeiten verfolgen können, können Sie die folgende Lösung für VS 2010 (und vielleicht auch älter) verwenden. Der folgende Code verwendet CTime von Casey Muratori. Natürlich kann man es auch einfach verwenden, um die Build-Zeit zu drucken.

Öffnen Sie den Makro-Explorer auf, und fügen Sie den folgenden vor 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

Antwort genommen von hier und hier .

Optionen -> Projekte und Lösungen -> VC ++ Projekteinstellungen -> Build-Timing

Ich habe eine Erweiterung geschaffen, um die Bauzeiten und präsentieren die Reihenfolge der Ereignisse in einem Diagramm zu messen: Visual Studio Build-Timer .

Es ist auf Visual Studio Marktplatz und arbeitet für VS2015 und VS2017.

Ich finde die visuelle Darstellung sehr hilfreich. Neben zeigen, welche Projekte länger dauern, es zeigt auch Abhängigkeiten zwischen ihnen, das heißt Projekte, die für die anderen warten zu beenden, bevor sie beginnen. Auf diese Weise können Engpässe in der Build erkennen und sehen, welche Abhängigkeiten zu brechen, um brauchen die Parallelisierung des Builds zu erhöhen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top