2009-02-24 35 views
7

Có cách nào để ghi lại số lượng bản dựng được thực hiện trong một ngày phát triển trong Visual Studio hay bất cứ nơi nào chúng ta có thể móc vào thứ gì đó để lấy siêu dữ liệu không?Visual Studio Builds mỗi ngày

Tôi tò mò bao nhiêu lần trung bình tôi xây dựng/ngày * mất bao lâu cho mỗi lần xây dựng ...

Bạn nghĩ gì?

UPDATE: xin lỗi cho việc thiếu chi tiết ... và bài tập này là hoàn toàn học tập

Với một giải pháp mà có 14 dự án khác nhau (1 là một trang web). Tôi liên tục xây dựng toàn bộ giải pháp (Ctrl + Shift + B). Thật thú vị khi tìm ra không chỉ số lần tôi xây dựng trong ngày, mà còn mất bao nhiêu thời gian chờ đợi để xây dựng xong ...

Giải pháp tối ưu sẽ là giải pháp không yêu cầu thay đổi chính các dự án của giải pháp. (các sự kiện trước/sau khi xây dựng) Tôi không muốn phải thêm/hoàn tác các thay đổi trước/sau khi đăng ký.

(The Nant/giải pháp khác là nghe có vẻ như câu trả lời, tôi đoán tôi có thể lập bản đồ đó để một phím tắt và không phải rời khỏi VS để làm xây dựng)

Bất kỳ lời đề nghị khác?

+0

Tôi sử dụng ghi chú sau đó;) –

Trả lời

4

Sử dụng trình khám phá macro của bạn để tạo macro mới. Mở macro mới và chỉnh sửa Mô-đun EnvironmentEvents (bạn có thể để trống mô-đun khác). Bạn có thể sử dụng một cơ sở dữ liệu thay vì một tập tin.

Private BuildStopWatch As System.Diagnostics.Stopwatch = New System.Diagnostics.Stopwatch() 

Private Sub BuildEvents_OnBuildBegin(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildBegin 
    BuildStopWatch.Reset() 
    BuildStopWatch.Start() 
End Sub 

Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone 
    BuildStopWatch.Stop() 
    DTE.ToolWindows.OutputWindow.ActivePane.OutputString("Build succeed in " & BuildStopWatch.Elapsed.TotalSeconds & " seconds.") 
    Dim fileName As String = "D:\BuildTimes.txt" 
    Try 
     Dim streamWriter As StreamWriter 
     If File.Exists(fileName) Then 
      streamWriter = File.AppendText(fileName) 
     Else 
      streamWriter = File.CreateText(fileName) 
     End If 

     streamWriter.WriteLine(DateTime.Now.ToString() & " " & "Build Time:" & BuildStopWatch.Elapsed.TotalSeconds) 
     streamWriter.Close() 
     streamWriter.Dispose() 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
End Sub 
+0

Có lời khuyên nào để làm việc này không? khi tôi đặt kịch bản này vào, tôi không thấy bất kỳ điều gì trong "OutputWindow" và không có tệp nào được ghi lại ... Có điều gì khác mà tôi phải làm để có được điều này không? Tôi nghĩ đó là những gì tôi đang tìm kiếm. –

+0

Ok, tìm thấy "mẹo" của tôi để làm cho nó hoạt động ... Tôi đã có một số macro khác ở một vị trí khác có vẻ gây xung đột và không cho phép các sự kiện phát sinh. (Tôi đã nhận xét tất cả các macro thừa, không chắc chắn cái nào và tại sao). –

0

Có thể quá mức cần thiết, nhưng bạn có thể viết tiện ích ghi nhật ký của riêng mình để ghi nhật ký siêu dữ liệu về bản dựng cho từng dự án. Theo dõi số lượng xây dựng ngày hôm đó thông qua lớp đăng nhập của bạn.

Vui lòng xem this link về mở rộng ghi nhật ký MSBuild và this link về mở rộng MSBuild bằng các tác vụ tùy chỉnh.

+0

Tôi đã rất ấn tượng với những gì bạn có thể làm với MSBUild. Tại một công ty tôi làm việc cho, chúng tôi sử dụng MSBuild để biên dịch một loạt các mã Flex khi dự án chính của chúng tôi đã hoàn thành xây dựng - theo cách đó, chúng tôi chỉ phải khởi chạy một bản dựng mỗi ngày. –

10

Một tùy chọn là tạo một vài tập lệnh bằng ngôn ngữ kịch bản yêu thích của bạn và thêm chúng vào sự kiện trước và sau khi xây dựng của cài đặt dự án.

Bây giờ mỗi khi bạn chạy một bản dựng, các tập lệnh sẽ được chạy và bạn có thể có các tập lệnh theo dõi bất kỳ thông tin nào bạn yêu cầu.

Nhưng điều này sẽ chỉ hoạt động ở mức dự án và không tự động trên tất cả các dự án.

+4

Bạn có thể sử dụng bước tạo trước để đếm số lần xây dựng đã cố gắng và bước sau khi xây dựng để đếm số lần tạo thành công. –

+4

... và gọi cùng một tập lệnh cả trước và sau để xác định thời gian xây dựng đã diễn ra. ;) –

+4

+1. đây cũng sẽ là câu trả lời của tôi. Cũng tốt đẹp mà nó có thể được gọi là riêng biệt cho mỗi proj trong một giải pháp. Có thể xem bao nhiêu thời gian VisStudio bỏ qua các dự án xây dựng mà không thay đổi. – CodingWithSpike

0

Nếu bạn đang xây dựng cùng một dự án mỗi lần, bạn có thể dễ dàng viết một đoạn mã nhỏ để thực hiện trong phần "Công việc dựng sẵn" của thuộc tính Dự án của bạn (nhấp vào nút "Tạo sự kiện" ở dưới cùng của Biên dịch tab của trang thuộc tính).

0

VS chỉ cho phép bạn nối vào các sự kiện xây dựng mức dự án vì vậy nếu điều này là không đủ, bạn có thể sử dụng tập lệnh xây dựng (MSBuild, NAnt v.v.) để xây dựng giải pháp sẽ cho bạn toàn quyền kiểm soát những gì xảy ra trước và/hoặc sau khi xây dựng.

Thành thật mà nói bạn sẽ nhận được lợi ích gì từ các thống kê này trên máy cục bộ? Chúng tôi sử dụng một máy chủ xây dựng CCNET http://ccnet.thoughtworks.com/ theo dõi thời gian xây dựng và thời gian kiểm tra đơn vị, và được kích hoạt sau khi cam kết kiểm soát nguồn của chúng tôi SVN http://www.collab.net/downloads/subversion/ Tôi muốn giới thiệu phương pháp này để thu thập số liệu thống kê.

0

Đảm bảo mô-đun EnvironmentsEvents của bạn nhập không gian tên System.IO để có thể truy cập vào cuộc gọi StreamWriter và File.