Afficher les temps de construction dans Visual Studio?

notre serveur de construction prend trop de temps pour construire un de nos projets C++. Il utilise Visual Studio 2008. Y a - t-il un moyen d'obtenir devenv.com pour enregistrer le temps pris pour construire chaque projet dans la solution, de sorte que je sais où concentrer mes efforts?

matériel Amélioré, n'est pas une option dans ce cas.

j'ai essayé de définir la verbosité de sortie (sous Outils / Options / projets et Solutions / construire et exécuter / MSBuild projet construire sortie verbosité.) Cela ne semble pas avoir d'effet dans l'IDE.

lors de L'exécution de MSBuild à partir de la ligne de commande (et, pour Visual Studio 2008, il doit être MSBuild v3.5), Il affiche le temps total écoulé à la fin, mais pas dans L'IDE.

je voulais vraiment un rapport de temps pris pour chaque projet dans la solution, afin que je puisse comprendre où le processus de construction prenait son temps.

alternativement, puisque nous utilisons nant pour conduire le processus de construction (nous utilisons Jetbrains TeamCity), y a-t-il un moyen d'obtenir NAnt pour me dire le temps pris pour chaque étape?

148
demandé sur Haacked 2008-09-17 15:20:16

12 réponses

Menu Outils Options les Projets et les Solutions Projet VC++ Paramètres → "151910920 de Construire" Timing devrait fonctionner.

170
répondu JesperE 2017-03-30 12:46:41

aller à Outils → Options → projets et Solutions → construire et exécuter → MSBuild project build output verbosity - défini à" Normal "ou" détaillé", et le temps de construction apparaîtra dans la fenêtre de sortie.

63
répondu Dave Moore 2018-08-23 12:07:05

Visual Studio 2012 till 2017

  • pour les projets MSBuild (par exemple tous les projets. Net):

    Cliquez sur Tools -> Options et sélectionnez Projects and Solutions -> Build and Run . Remplacer MSBuild project build output verbosity par Normal . Ainsi, il affichera le temps écoulé dans chaque projet de Solution qu'il construit. Mais il n'y a malheureusement pas de temps écoulé sur l'ensemble du projet. Vous verrez aussi le timestamp

  • POUR le C/C++ du Projet:

cliquez sur Tools -> Options puis sélectionnez Projects and Solutions -> VC++ Project Settings .

changer Build Timing en Yes .

26
répondu Sebastian 2018-07-24 06:43:38

pour Visual Studio 2012, vous pouvez utiliser l'extension Build Monitor .

8
répondu Oliver 2014-03-27 17:32:33

si vous êtes bloqué sur VS2005, vous pouvez utiliser le plugin vs-build-timer . Lors de l'achèvement d'une construction, il indique le temps total pris et une (facultatif) résumé de chaque projet durées.

Avertissement; je l'ai écrit. Et oui, j'ai besoin de créer un installateur...un jour!

5
répondu MattyT 2010-04-07 04:29:02

Outils->Options->les Projets et les Solutions->Construire et Exécuter->

Set "projet MSBuild la sortie de la construction de verbosité" à partir de "Minimes", à la "Normale"

5
répondu RaaFFC 2013-01-16 12:14:36

puisque votre question implique D'utiliser DevEnv à partir de la ligne de commande, je suggère également d'utiliser MSBuild (qui peut construire .la sln fichiers sans modification).

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

msbuild /? vous montrera d'autres options utiles pour le filelogger.

4
répondu Dave Moore 2017-04-03 17:05:49

si vous voulez visualiser votre construction, vous pouvez utiliser IncrediBuild. IncrediBuild est maintenant disponible en mode autonome (non distribué, mais à utiliser uniquement sur 8 cœurs sur votre machine locale) gratuitement dans le cadre de Visual Studio 2015 Mise À Jour 1

clause de non-responsabilité: je travaille pour IncrediBuild

3
répondu buildops 2015-12-06 17:50:45

j'ai fini ici parce que je voulais juste que la date et l'heure soient incluses dans la sortie de construction. Si d'autres cherchent quelque chose de similaire, c'est aussi simple que d'ajouter echo %date% %time% aux événements pré-construction et/ou Post-construction dans le cadre du projet, propriétés compiler construire des événements .

2
répondu InbetweenWeekends 2017-03-26 12:41:13

construisez d'abord et voyez quel projet apparaît en premier dans la sortie de construction ( Ctrl + Home dans la fenêtre de sortie). Clic droit que le projet → Propriétés du projet compiler construire des événements pré-construire . Et echo ###########%date% %time%############# .

donc à chaque fois que vous voyez les résultats de construction (ou pendant la construction) faites Ctrl + Maison dans la fenêtre de sortie. Et quelque part dans cette zone, l'heure et la date vous regardent en face!

Oh, et vous pourriez finir par l'ajout de ces détails à de nombreux projets comme la construction de l'ordre peut changer :)


j'ai trouvé une meilleure solution! ###

Outils Options Projets & Solutions Build and Run projet MSBuild la sortie de la construction de verbosité = Normal (ou au-dessus de Minimal ). Cela ajoute le temps dans la fenêtre de début/haut de la sortie. Ctrl + Maison dans la fenêtre de sortie devrait faire.

si nous voulons voir combien de temps chaque projet prend alors projets & Solutions VC++ Project Settings Construire Timing = oui . Il s'applique à tous les projets; "VC++" est trompeur.

1
répondu Blue Clouds 2017-04-03 17:08:07

si vous voulez invoquer un programme externe qui peut suivre vos temps de construction totaux, vous pouvez utiliser la solution suivante pour VS 2010 (et peut-être plus ancienne). Le code ci-dessous utilise CTime de Casey Muratori. Bien sûr, vous pouvez également l'utiliser pour imprimer simplement le temps de génération.

ouvrir le macro explorer, et coller ce qui suit avant 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

Réponse tirée de ici et ici .

0
répondu Andreas Haferburg 2017-05-23 11:47:18

Options - > projets et Solutions - > VC++ Project Settings - > Build Timing

enter image description here

0
répondu Wesam 2018-07-03 10:39:34