it-swarm-eu.dev

Zobrazení časů sestavení v aplikaci Visual Studio?

Náš budovací server trvá příliš dlouho na vybudování jednoho z našich C++ projektů. Využívá Visual Studio 2008. Existuje nějaký způsob, jak dostat devenv.com zaznamenávat čas potřebný k vybudování každého projektu v řešení, takže vím, kam mám své úsilí zaměřit?

Vylepšený hardware není v tomto případě možností.

Snažil jsem se nastavit výstupní výřečnost (pod Nástroje/Možnosti/Projekty a řešení/Sestavit a spustit/MSBuild projekt sestavit výstup výřečnost). Nezdá se, že by to mělo vliv na IDE.

Při spuštění MSBuild z příkazového řádku (a pro Visual Studio 2008 musí být MSBuild v3.5), zobrazí celkový čas uplynul na konci, ale ne v IDE.

Opravdu jsem chtěl, aby se pro každý projekt v řešení objevila časově závislá zpráva, abych mohl zjistit, kde se buduje proces budování.

Alternativně, protože ve skutečnosti používáme NAnt k řízení procesu sestavování (používáme Jetbrains TeamCity), existuje způsob, jak dostat NAnt, aby mi sdělil čas potřebný pro každý krok?

155
Roger Lipscombe

Menu Nástroje Možnosti Projekty a řešení Nastavení projektu VC++ Budování časování by mělo fungovat.

177
JesperE

Přejděte do menu Nástroje → Možnosti → Projekty a řešení → Sestavit a spustit → Výpis výtisku projektu MSBuild - nastavte na "Normální" nebo "Detailní" a ve výstupním okně se zobrazí doba sestavení.

73
Dave Moore

Visual Studio 2012 až 2017

  • Pro projekty MSBuild (např. Všechny .Net-projekty):
    Klikněte na Tools -> Options a poté vyberte Projects and Solutions -> Build and Run. Změňte MSBuild project build output verbosity na Normal. Tak to bude zobrazovat Time Elapsed v každém řešení projektu, který buduje. Neexistuje však bohužel žádný souhrnný čas pro všechny projekty. Rovněž se zobrazí časová razítka Založena

  • PRO C/C++ Projekt:  

Klikněte na Tools -> Options a vyberte Projects and Solutions -> VC++ Project Settings.

Změňte Build Timing na Yes.

27
Sebastian

Pro Visual Studio 2012 můžete použít Build Monitor extension.

9
Oliver

Pokud jste uvízl na VS2005 můžete použít vs-build-timer plugin . Po dokončení stavby se zobrazí celkový čas a (volitelné) shrnutí každé doby trvání projektu.

Prohlášení; Napsal jsem to. A ano, musím vytvořit instalátor ... jednoho dne!

5
MattyT

Nástroje-> Možnosti-> Projekty a řešení-> Sestavit a spustit->

Nastavit "Výslovnost sestavení projektu MSBuild" z "Minimální" na "Normální"

5
RaaFFC

Vzhledem k tomu, že vaše otázka zahrnuje použití DevEnv z příkazového řádku, doporučil bych také použít MSBuild (který může vytvářet soubory .sln bez úpravy). 

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

msbuild /? vám ukáže další užitečné možnosti pro filelogger.

4
Dave Moore

Chcete-li vizualizovat sestavení, můžete použít IncrediBuild. IncrediBuild je nyní k dispozici v samostatném režimu (není distribuován, ale pro použití pouze na 8 jádrech na místním počítači) zdarma v rámci aktualizace Visual Studio 2015 Update 1

Disclaimer: Pracuji pro IncrediBuild

3
buildops

Skončil jsem tady, protože jsem chtěl, aby datum a čas byly zahrnuty do výstupu. Pokud by jiní hledali něco podobného, ​​je to tak jednoduché jako přidání echo %date% %time% do událostí Pre-build a/nebo Post-build v rámci projektu, Properties Compile Build Events .

2

Proveďte první sestavení a zjistěte, který projekt se objevuje nejprve ve výstupu sestavení (Ctrl + Home ve výstupním okně). Klikněte pravým tlačítkem myši na tento projekt → Vlastnosti projektKompilovatVytvořit událostiPre-build. A echo ###########%date% %time%#############.

Takže pokaždé, když uvidíte výsledky sestavení (nebo během sestavování) Ctrl + Home ve výstupním okně. A někde v této oblasti se čas a datum dívá na vaši tvář!

Mohli byste skončit s přidáním těchto údajů do mnoha projektů, protože stavba může změnit :)


Našel jsem lepší řešení! ###

NástrojeMožnostiProjekty a řešeníSestavit a spustitVýpis výukového projektu MSBuild = Normální (nebo vyšší Minimální). Tím se přidá čas na začátek/horní část výstupního okna. Ctrl + Home ve výstupním okně.

Chceme-li zjistit, kolik času každý projekt trvá, pak Projekty a řešeníNastavení projektu VC++Build Timing = yes. Platí pro všechny projekty; "VC++" je zavádějící.

2
Blue Clouds

Pokud chcete vyvolat externí program, který může sledovat vaše celkové časy sestavení, můžete použít následující řešení pro VS 2010 (a možná i starší). Níže uvedený kód používá CTime od Casey Muratori. Samozřejmě jej můžete také použít k tisku času sestavení.

Otevřete Průzkumník maker a vložte následující text před 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

Odpověď z zde a zde .

1

Možnosti -> Projekty a řešení -> Nastavení projektu VC++ -> Vytvoření načasování

 enter image description here

0
Wesam

Vytvořil jsem rozšíření pro měření doby sestavení a zobrazení pořadí událostí v grafu: Visual Studio Build Timer .

 enter image description here

Je k dispozici na vizuálním ateliéru a funguje pro VS2015 a VS2017.

Vizuální prezentaci považuji za velmi užitečnou. Kromě toho, že se ukáže, které projekty trvají déle, ukazuje také závislost mezi nimi, tj. Projekty, které čekají, až ostatní začnou, než začnou. Tímto způsobem můžete zjistit úzká místa v sestavení a zjistit, jaké závislosti je třeba přerušit, aby se zvýšila paralelizace vašeho sestavení.

0
opetroch