it-swarm-id.com

Menampilkan waktu pembuatan di Visual Studio?

Server build kami terlalu lama untuk membangun salah satu proyek C++ kami. Menggunakan Visual Studio 2008. Apakah ada cara untuk membuat devenv.com mencatat waktu yang dibutuhkan untuk membangun setiap proyek dalam solusi, sehingga saya tahu di mana harus memfokuskan upaya saya?

Perangkat keras yang ditingkatkan bukan merupakan opsi dalam hal ini.

Saya sudah mencoba mengatur verbositas keluaran (di bawah Alat/Opsi/Proyek dan Solusi/Bangun dan Jalankan/proyek MSBuild membangun verbositas keluaran). Ini sepertinya tidak berpengaruh pada IDE.

Saat menjalankan MSBuild dari baris perintah (dan, untuk Visual Studio 2008, harus MSBuild v3.5), ini menampilkan total waktu yang telah berlalu di bagian akhir, tetapi tidak di IDE.

Saya benar-benar ingin laporan yang diambil waktu untuk setiap proyek dalam solusi, sehingga saya bisa mencari tahu di mana proses pembangunan mengambil waktu.

Atau, karena kita benar-benar menggunakan NAnt untuk mendorong proses pembangunan (kami menggunakan Jetbrains TeamCity), apakah ada cara untuk membuat NAnt memberi tahu saya waktu yang diperlukan untuk setiap langkah?

155
Roger Lipscombe

Menu Alat Pilihan Proyek dan Solusi VC++ Pengaturan Proyek Build Timing harus bekerja.

177
JesperE

Pergi ke Alat → Pilihan → Proyek dan Solusi → Bangun dan Jalankan → Proyek MSBuild membangun verbositas keluaran - diatur ke "Normal" atau "Detail", dan waktu build akan muncul di jendela output.

73
Dave Moore

Visual Studio 2012 hingga 2017

  • Untuk Proyek MSBuild (mis. Semua .Net-Projects):
    .__ Klik Tools -> Options dan kemudian pilih Projects and Solutions -> Build and Run. Ubah MSBuild project build output verbosity menjadi Normal. Sehingga ia akan menampilkan Waktu yang Sudah Berlalu dalam setiap Proyek Solusi yang dibangunnya. Tapi sayangnya tidak ada Jumlah Waktu Berlalu atas semua proyek. Anda juga akan melihat Timestamp mulai pembangunan

  • UNTUK C/C++ Proyek:  

Klik Tools -> Options dan kemudian pilih Projects and Solutions -> VC++ Project Settings.

Ubah Build Timing menjadi Yes.

27
Sebastian

Untuk Visual Studio 2012 Anda bisa menggunakan ekstensi Build Monitor .

9
Oliver

Jika Anda terjebak pada VS2005 Anda bisa menggunakan plugin vs-build-timer . Pada penyelesaian membangun itu menunjukkan total waktu yang diambil dan ringkasan (opsional) dari masing-masing durasi proyek.

Penolakan; Saya menulisnya. Dan ya, saya perlu membuat installer ... suatu hari!

5
MattyT

Alat-> Opsi-> Proyek dan Solusi-> Bangun dan Jalankan->

Setel "MSBuild project build output verbosity" dari "Minimal" ke "Normal"

5
RaaFFC

Karena pertanyaan Anda melibatkan penggunaan DevEnv dari baris perintah, saya juga menyarankan menggunakan MSBuild (yang dapat membangun file .sln tanpa modifikasi). 

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

msbuild /? akan menunjukkan kepada Anda opsi berguna lainnya untuk filelogger.

4
Dave Moore

Jika Anda ingin memvisualisasikan bangunan Anda, Anda dapat menggunakan IncrediBuild. IncrediBuild sekarang tersedia dalam mode mandiri (tidak didistribusikan tetapi hanya digunakan pada 8 core pada mesin lokal Anda) secara gratis sebagai bagian dari Pembaruan Visual Studio 2015 1

Penafian: Saya bekerja untuk IncrediBuild

3
buildops

Saya berakhir di sini karena saya hanya ingin tanggal dan waktu dimasukkan dalam output build. Jika orang lain mencari sesuatu yang serupa, sesederhana menambahkan echo %date% %time% ke acara Pra-bangun dan/atau pasca-bangun dalam proyek, Properti Kompilasi Bangun Acara .

2

Lakukan build terlebih dahulu dan lihat proyek mana yang muncul pertama kali dalam output build (Ctrl + Home di jendela output). Klik kanan proyek itu → Properti ProyekKompilasiBangun AcaraPra-bangun. Dan echo ###########%date% %time%#############.

Jadi setiap kali Anda melihat hasil build (atau selama build) lakukan Ctrl + Home di jendela output. Dan di suatu tempat di daerah itu waktu dan tanggal menatap wajah Anda!

Oh dan Anda mungkin akhirnya menambahkan detail ini ke banyak proyek karena pesanan build dapat berubah :)


Saya menemukan solusi yang lebih baik! ###

AlatOpsiProyek & SolusiBuild and Runproyek MSBuild membangun verbositas keluaran = Normal (atau di atas Minimal). Ini menambah waktu di awal/atas jendela output. Ctrl + Home di jendela output harus dilakukan.

Jika kita ingin melihat berapa banyak waktu yang dibutuhkan masing-masing proyek --- Proyek & SolusiPengaturan Proyek VC++Build Timing = ya. Ini berlaku untuk semua proyek; "VC++" menyesatkan.

2
Blue Clouds

Jika Anda ingin menjalankan program eksternal yang dapat melacak total waktu build Anda, Anda dapat menggunakan solusi berikut untuk VS 2010 (dan mungkin lebih lama). Kode di bawah ini menggunakan CTime oleh Casey Muratori. Tentu saja Anda juga dapat menggunakannya untuk mencetak waktu pembuatan.

Buka Explorer makro, dan rekatkan yang berikut sebelum 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

Jawaban diambil dari sini dan sini .

1

Pilihan -> Proyek dan Solusi -> VC++ Pengaturan Proyek -> Build Timing

 enter image description here

0
Wesam

Saya telah membuat ekstensi untuk mengukur waktu pembuatan dan menyajikan urutan peristiwa dalam grafik: Visual Studio Build Timer .

 enter image description here

Ini tersedia di pasar visual studio dan berfungsi untuk VS2015 dan VS2017.

Saya menemukan presentasi visual cukup membantu. Selain menunjukkan proyek mana yang lebih lama, itu juga menunjukkan ketergantungan di antara mereka, yaitu proyek yang menunggu orang lain selesai sebelum mereka mulai. Dengan cara ini Anda bisa melihat kemacetan di build dan melihat dependensi apa yang perlu dipecahkan untuk meningkatkan paralelisasi build Anda.

0
opetroch