it-swarm-tr.com

Visual Studio'da derleme süreleri gösteriliyor mu?

Yapı sunucumuz C++ projelerimizden birini inşa etmek için çok uzun sürüyor. Visual Studio 2008 kullanıyor. Devenv.com'un her projeyi çözüme kavuşturmak için harcadığı zamanı kaydetmesi için herhangi bir yol var mı?

Gelişmiş donanım bu durumda bir seçenek değildir.

Çıktı ayrıntılarını ayarlamayı denedim (Araçlar/Seçenekler/Projeler ve Çözümler/Yapı ve Çalıştır/MSBuild projesi yapı çıktı ayrıntılarıyla). Bunun IDE'de herhangi bir etkisi olduğu görünmüyor.

MSBuild'i komut satırından çalıştırırken (ve Visual Studio 2008 için MSBuild v3.5 olması gerekir), sonunda geçen toplam süreyi görüntüler, ancak IDE'de gösterilmez.

Çözümdeki her proje için zaman ayırılmış bir rapor istedim, böylelikle yapım sürecinin zamanını nerede bulacağını bulabildim.

Alternatif olarak, inşa sürecini yürütmek için NAnt'yi kullandığımızdan (Jetbrains TeamCity kullanıyoruz), NAnt'i bana her adım için harcanan zamanı söylemenin bir yolu var mı?

155
Roger Lipscombe

Menü Araçlar Seçenekler Projeler ve Çözümler VC++ Proje Ayarları Derleme Zamanlaması Çalışmalı.

177
JesperE

Araçlar → Seçenekler → Projeler ve Çözümler → İnşa Et ve Çalıştır → MSBuild proje derlemesinin çıkış ayrıntılarını - "Normal" veya "Detaylı" olarak ayarlayın;.

73
Dave Moore

Visual Studio 2012'den 2017'ye kadar

  • MSBuild Projects için (ör. Tümü. Net-Projects):
    Tools -> Options öğesine tıklayın ve ardından Projects and Solutions -> Build and Run öğesini seçin. MSBuild project build output verbosity _ Normal olarak değiştirin. Böylece, inşa ettiği her bir Çözüm Projesinde Geçen Süre'yi gösterecektir. Ancak ne yazık ki tüm projeler için geçen hiçbir Zaman Toplaması yoktur. İnşaa başladığın Zaman Damgasını göreceksin

  • C/C++ Projesi İÇİN:

Tools -> Options öğesine tıklayın ve ardından Projects and Solutions -> VC++ Project Settings öğesini seçin.

Build Timing _ Yes olarak değiştirin.

31
Sebastian

Visual Studio 2012 için Build Monitor extension kullanabilirsiniz.

9
Oliver

VS2005'te takılı kalmışsanız vs-build-timer plugin kullanabilirsiniz. Bir inşaatın bitiminde, toplam süreyi ve proje sürelerinin her birinin (isteğe bağlı) bir özetini gösterir.

Yasal Uyarı; Ben yazdım Ve evet, bir yükleyici yaratmam gerekiyor ... bir gün!

5
MattyT

Araçlar-> Seçenekler-> Projeler ve Çözümler-> Yap ve Çalıştır->

"MSBuild project build output ayrıntılarını" "Minimal" den "Normal" e ayarlayın

5
RaaFFC

Sorunuz, komut satırından DevEnv kullanımını içerdiğinden, MSBuild (hangi .sln dosyalarını değiştirmeden oluşturabilir) kullanmanızı öneririm. 

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

msbuild /? size dosya klasörü için diğer yararlı seçenekleri gösterir.

4
Dave Moore

Yapınızı görselleştirmek istiyorsanız IncrediBuild'i kullanabilirsiniz. IncrediBuild artık Visual Studio 2015 Güncelleştirmesi'nin bir parçası olarak ücretsiz olarak (yerel makinenizde yalnızca 8 çekirdeğinde kullanım için dağıtılmamış ancak kullanım için)

Feragatname: IncrediBuild için çalışıyorum

3
buildops

Burada bitirdim çünkü derleme çıktısına dahil edilen tarih ve saati istedim. Diğerlerinin de benzer bir şey arayışında olması durumunda, proje altındaki Yapı Öncesi ve/veya Yapı Öncesi etkinliklerine echo %date% %time% eklemek kadar basit, ÖzelliklerDerlemeYapı Oluşturma.

2

Önce bir derleme yapın ve derleme çıktısında hangi projenin ilk önce göründüğünü görün (Ctrl + Home çıkış penceresinde). Bu projeye sağ tıklayın → Proje ÖzellikleriDerlemeYapı OluşturmaYapı Öncesi. Ve echo ###########%date% %time%#############.

Böylece derleme sonuçlarını (veya derleme sırasında) her görüşte Ctrl + Home çıkış penceresinde. Ve o bölgede bir yerde saat ve tarih yüzünüze bakıyor!

Oh ve bu detayları inşa emrinin değişebileceği birçok projeye ekleyebilirsin :)


Daha iyi bir çözüm buldum! ###

AraçlarSeçeneklerProjeler ve Çözümlerİnşa Et ve ÇalıştırMSBuild projesinin çıktı çıktısı oluşturma = Normal (veya üstü Minimal). Bu, çıkış penceresinin başlangıcına/üstüne zaman ekler. Ctrl + Home çıkış penceresinde yapmalı.

Her projenin ne kadar zaman alacağını görmek istiyorsak Projeler ve ÇözümlerVC++ Proje AyarlarıDerleme Zamanlaması = evet. Tüm projeler için geçerlidir; "VC++" yanıltıcıdır.

2
Blue Clouds

Toplam inşa sürelerinizi izleyebilecek harici bir programı çağırmak istiyorsanız, VS 2010 için (ve belki daha eski) aşağıdaki çözümü kullanabilirsiniz. Aşağıdaki kod Casey Muratori tarafından CTime kullanmaktadır. Tabii ki, yalnızca oluşturma süresini yazdırmak için de kullanabilirsiniz.

Makro Gezgini'ni açın ve aşağıdakini End Module'dan önce yapıştırın:

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

Burada ve Burada den alınan cevap.

1

Seçenekler -> Projeler ve Çözümler -> VC++ Proje Ayarları -> Derleme Zamanlaması

 enter image description here

0
Wesam

Derleme zamanlarını ölçmek ve olayların sırasını bir grafikte sunmak için bir uzantı oluşturdum: Visual Studio Build Timer .

 enter image description here

Görsel stüdyo pazarında bulunur ve VS2015 ve VS2017 için çalışır.

Görsel sunumu oldukça faydalı buluyorum. Hangi projelerin daha uzun sürdüğünü göstermenin yanı sıra, aralarındaki bağımlılıkları da gösterir, yani başkalarının başlamadan önce bitmesini bekleyen projeler. Bu şekilde, yapıdaki darboğazları tespit edebilir ve yapınızın paralelleşmesini arttırmak için hangi bağımlılıkların kırılması gerektiğini görebilirsiniz.

0
opetroch