it-swarm-vi.tech

Hiển thị thời gian xây dựng trong Visual Studio?

Máy chủ xây dựng của chúng tôi đang mất quá nhiều thời gian để xây dựng một trong các dự án C++ của chúng tôi. Nó sử dụng Visual Studio 2008. Có cách nào để devenv.com ghi lại thời gian cần thiết để xây dựng từng dự án trong giải pháp, để tôi biết nơi tập trung nỗ lực của mình không?

Cải thiện phần cứng không phải là một lựa chọn trong trường hợp này.

Tôi đã thử thiết lập mức độ dài của đầu ra (bên dưới Công cụ/Tùy chọn/Dự án và Giải pháp/Xây dựng và Chạy/Độ dài đầu ra của dự án xây dựng dự án MSBuild). Điều này dường như không có bất kỳ ảnh hưởng nào trong IDE.

Khi chạy MSBuild từ dòng lệnh (và, đối với Visual Studio 2008, nó cần phải là MSBuild v3.5), nó sẽ hiển thị tổng thời gian đã trôi qua ở cuối, nhưng không phải trong IDE.

Tôi thực sự muốn có một báo cáo mất thời gian cho từng dự án trong giải pháp, để tôi có thể tìm ra nơi quá trình xây dựng đang mất thời gian.

Ngoài ra, vì chúng tôi thực sự sử dụng NAnt để thúc đẩy quá trình xây dựng (chúng tôi sử dụng Jetbrains TeamCity), có cách nào để NAnt cho tôi biết thời gian dành cho mỗi bước không?

155
Roger Lipscombe

Menu Công cụ Tùy chọn Dự án và Giải pháp Cài đặt dự án VC++ Xây dựng thời gian nên hoạt động.

177
JesperE

Chuyển đến Công cụ → Tùy chọn → Dự án và Giải pháp → Xây dựng và Chạy → Độ dài đầu ra của dự án xây dựng dự án MSBuild - được đặt thành "Bình thường" hoặc "Chi tiết" và thời gian xây dựng sẽ xuất hiện trong cửa sổ đầu ra.

73
Dave Moore

Visual Studio 2012 đến 2017

  • Đối với Dự án MSBuild (ví dụ: tất cả .Net-Project):
    Nhấp vào Tools -> Options và sau đó chọn Projects and Solutions -> Build and Run. Thay đổi MSBuild project build output verbosity thành Normal. Vì vậy, nó sẽ hiển thị Thời gian đã trôi qua trong mọi Dự án Giải pháp mà nó xây dựng. Nhưng thật đáng tiếc là không có Tổng thời gian đã qua trong tất cả các dự án. Bạn cũng sẽ thấy Dấu thời gian bắt đầu xây dựng

  • Dự án C/C++:  

Nhấp vào Tools -> Options và sau đó chọn Projects and Solutions -> VC++ Project Settings.

Thay đổi Build Timing thành Yes.

27
Sebastian

Đối với Visual Studio 2012, bạn có thể sử dụng Build Monitor phần mở rộng.

9
Oliver

Nếu bạn bị kẹt trên VS2005, bạn có thể sử dụng plugin vs-build-timer . Khi hoàn thành một bản dựng, nó hiển thị tổng thời gian thực hiện và tóm tắt (tùy chọn) của từng thời lượng dự án.

Tuyên bố miễn trừ trách nhiệm; Tôi đã viết nó. Và vâng, tôi cần tạo một trình cài đặt ... một ngày nào đó!

5
MattyT

Công cụ-> Tùy chọn-> Dự án và Giải pháp-> Xây dựng và Chạy->

Đặt "Độ dài đầu ra của dự án xây dựng dự án MSBuild" từ "Tối thiểu" thành "Bình thường"

5
RaaFFC

Vì câu hỏi của bạn liên quan đến việc sử dụng DevEnv từ dòng lệnh, tôi cũng sẽ đề xuất sử dụng MSBuild (có thể xây dựng các tệp .sln mà không cần sửa đổi). 

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

msbuild /? sẽ hiển thị cho bạn các tùy chọn hữu ích khác cho filelogger.

4
Dave Moore

Nếu bạn muốn trực quan hóa bản dựng của mình, bạn có thể sử dụng IncrediBuild. IncrediBuild hiện có sẵn ở chế độ độc lập (không được phân phối nhưng chỉ sử dụng trên 8 lõi trên máy cục bộ của bạn) như một phần của Visual Studio 2015 Update 1

Tuyên bố miễn trừ trách nhiệm: Tôi làm việc cho IncrediBuild

3
buildops

Tôi đã kết thúc ở đây vì tôi chỉ muốn ngày và thời gian được bao gồm trong đầu ra bản dựng. Nếu những người khác đang tìm kiếm thứ gì đó tương tự thì đơn giản như thêm echo %date% %time% vào các sự kiện Pre-build và/hoặc Post-build trong dự án, Thuộc tính Biên dịch Xây dựng sự kiện .

2
InbetweenWeekends

Thực hiện xây dựng trước và xem dự án nào xuất hiện đầu tiên trong đầu ra xây dựng (Ctrl + Home trong cửa sổ đầu ra). Nhấp chuột phải vào dự án đó → Thuộc tính dự ánBiên dịchXây dựng sự kiệnXây dựng trước. Và echo ###########%date% %time%#############.

Vì vậy, mỗi khi bạn thấy kết quả xây dựng (hoặc trong quá trình xây dựng) hãy làm Ctrl + Home trong cửa sổ đầu ra. Và một nơi nào đó trong khu vực đó thời gian và ngày nhìn chằm chằm vào khuôn mặt của bạn!

Ồ và cuối cùng bạn có thể thêm các chi tiết này vào nhiều dự án vì thứ tự xây dựng có thể thay đổi :)


Tôi tìm thấy một giải pháp tốt hơn! ###

Công cụTùy chọnDự án & Giải phápXây dựng và chạyĐộ dài đầu ra của dự án xây dựng dự án MSBuild = Bình thường (hoặc cao hơn Tối thiể). Điều này thêm thời gian trong đầu/đầu của cửa sổ đầu ra. Ctrl + Home trong cửa sổ đầu ra nên làm.

Nếu chúng ta muốn xem mỗi dự án mất bao nhiêu thời gian thì Dự án & Giải phápCài đặt dự án VC++Xây dựng thời gian = có. Nó được áp dụng cho tất cả các dự án; "VC++" là sai lệch.

2
Blue Clouds

Nếu bạn muốn gọi một chương trình bên ngoài có thể theo dõi tổng thời gian xây dựng của mình, bạn có thể sử dụng giải pháp sau cho VS 2010 (và có thể cũ hơn). Mã dưới đây sử dụng CTime của Casey Muratori. Tất nhiên bạn cũng có thể sử dụng nó để in thời gian xây dựng.

Mở trình khám phá macro và dán phần sau vào trước 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

Câu trả lời được lấy từ tại đâytại đây .

1
Andreas Haferburg

Tùy chọn -> Dự án và Giải pháp -> Cài đặt dự án VC++ -> Xây dựng thời gian

 enter image description here

0
Wesam

Tôi đã tạo một tiện ích mở rộng để đo thời gian xây dựng và trình bày thứ tự các sự kiện trong biểu đồ: Visual Studio Build Timer .

 enter image description here

Nó có sẵn trên thị trường phòng thu trực quan và hoạt động cho VS2015 và VS2017.

Tôi thấy trình bày trực quan khá hữu ích. Ngoài việc hiển thị dự án nào mất nhiều thời gian hơn, nó còn cho thấy sự phụ thuộc giữa chúng, tức là các dự án đang chờ người khác hoàn thành trước khi chúng bắt đầu. Bằng cách này, bạn có thể phát hiện các nút thắt cổ chai trong bản dựng và xem những phụ thuộc nào cần phá vỡ để tăng tính song song của bản dựng.

0
opetroch