2011-10-11 16 views
7

Tôi có một tập tin batch để xây dựng các giải pháp .net và đang cố gắng để có được mức độ verbosity được tối thiểu mà chỉ cho thấy dự án được xây dựng và cảnh báo và/hoặc lỗi nhưng cũng muốn xem tóm tắt ở phần cuối cùng với số cảnh báo và lỗi cộng với thời gian xây dựng.msbuild: Dù sao để hiển thị tóm tắt và sử dụng verbosity = tối thiểu

Tôi đã thử nhiều sự kết hợp của tính cách rườm rà và/v và/CPL nhưng có vẻ như bạn chỉ có thể nhận được quá nhiều đầu ra + bản tóm tắt hay đầu ra tối thiểu phải và không có tóm tắt

Bất kỳ ý tưởng?

Cảm ơn trước

+0

Tôi cũng đã thử cách này và không nghĩ rằng điều đó có thể ... Ngoài sự tò mò, có gì sai với đầu ra tiêu chuẩn? Tôi đã tìm thấy nó rất hữu ích trong việc gỡ lỗi các vấn đề xây dựng và có thể dễ dàng bị xóa đi với một 'cls' gọi –

+0

@NickNieslanik Đầu ra tiêu chuẩn cho giải pháp là lớn và bộ đệm dấu nhắc lệnh không (không sửa đổi) đủ lớn để cho phép bạn xem lại đầu ra bàn điều khiển đầy đủ, cộng với rất nhiều đầu ra như tệp sao chép, tệp đã xóa Tôi không quan tâm đến –

+3

Tại sao bạn không sử dụng File Logger để khắc phục sự cố bộ đệm lệnh? điều đó sẽ làm giảm bớt ít nhất một trong những vấn đề. Bạn có thể sử dụng trình ghi tệp để thực hiện những việc như "ghi nhật ký lỗi cho một tệp, cảnh báo cho một tệp khác và thông tin thường xuyên đến một tệp thứ ba" –

Trả lời

3

Bạn có thể viết một logger tùy chỉnh như đã giải thích ở đây: http://msdn.microsoft.com/en-us/library/ms171471.aspx

Dưới đây là một chút mã để giúp bạn bắt đầu:

public class SummaryLogger : Logger 
{ 
    int warningCount = 0; 
    int errorCount = 0; 

    public override void Initialize(IEventSource eventSource) 
    { 
     eventSource.WarningRaised += eventSource_WarningRaised; 
     eventSource.ErrorRaised += eventSource_ErrorRaised; 
     eventSource.BuildFinished += eventSource_BuildFinished; 
    } 

    void eventSource_WarningRaised(object sender, BuildWarningEventArgs e) 
    { 
     warningCount++; 
     Console.WriteLine("Warning: " + e.Message); 
    } 

    void eventSource_ErrorRaised(object sender, BuildErrorEventArgs e) 
    { 
     errorCount++; 
     Console.WriteLine("Error: " + e.Message); 
    } 

    void eventSource_BuildFinished(object sender, BuildFinishedEventArgs e) 
    { 
     Console.WriteLine("MSBuild Finished: " + errorCount + " errors | " + warningCount + " warnings."); 
    } 
} 

logger này ghi cảnh báo, lỗi và Tóm tắt số lượng lỗi và cảnh báo. Bạn sẽ cần phải thêm một chút mã cho thời gian và dự án, để nó chính xác là những gì bạn muốn.

Để sử dụng nó, bạn gọi MSBuild với params sau thêm vào nó:

/nologo /noconsolelogger /logger:pathTo/SummaryLogger.dll 
1

ai nghĩ sẽ để trích xuất thông tin cần thiết từ một tập tin log.

Như thế này,

Step 1: Redirect your msbuild outputs to a log.txt 
Step 2: At the end of the batch file run findstr cmd to look for desired text 

Ví dụ:

@echo off 
setlocal 
... 
MSBuild /nologo [path to project1 or sln1] [options] >> log.txt 
... 
MSBuild /nologo [path to project2 or sln2] [options] >> log.txt 
... 
findstr /irc:"Build*" /c:".*Warning(s)" /c:".*Error(s)" /c:"Time Elapsed.*" log.txt 

Hope this helps!

Các vấn đề liên quan