2011-10-11 7 views
7

मेरे पास .net समाधान बनाने के लिए एक बैच फ़ाइल है और वर्बोज़िटी स्तर को न्यूनतम होने की कोशिश कर रहा हूं जो केवल दिखाता है कि कौन सी परियोजना निर्माण कर रही है और कोई चेतावनी और/या त्रुटियां हैं लेकिन चेतावनियों और त्रुटियों के साथ-साथ निर्माण समय की संख्या के साथ अंत में सारांश देखना भी पसंद करेंगे।msbuild: वैसे भी सारांश दिखाने और verbosity का उपयोग करने के लिए = न्यूनतम

मैं शब्दाडंबर और/v और/सीपीएल के कई संयोजन की कोशिश की है, लेकिन यह आप केवल बहुत अधिक उत्पादन + सारांश या सही कम से कम उत्पादन और कोई सारांश

कोई भी विचार प्राप्त कर सकते हैं लगता है?

अग्रिम धन्यवाद

+0

मैंने इस मैनी तरीकों का भी प्रयास किया है और ऐसा नहीं लगता कि यह संभव है ... जिज्ञासा से, मानक आउटपुट में क्या गलत है? मैंने पाया है कि बिल्डिंग मुद्दों को डिबग करने में बहुत मददगार है और आसानी से 'सीएलएस' कॉल –

+0

@NickNieslanik के साथ आसानी से मिटाया जा सकता है समाधान के लिए मानक आउटपुट बड़ा है, और कमांड प्रॉम्प्ट बफर (संशोधन के बिना) अनुमति देने के लिए पर्याप्त नहीं है आप पूर्ण कंसोल आउटपुट की समीक्षा करते हैं, साथ ही कॉपी किए गए फ़ाइल जैसे आउटपुट के बहुत सारे, हटाए गए फ़ाइल में मुझे –

+3

में दिलचस्पी नहीं है क्यों आप फ़ाइल लॉगर उपाय कमांड प्रॉम्प्ट बफर समस्या का उपयोग नहीं करते हैं? जो कम से कम एक मुद्दों को कम करेगा। आप फाइल लॉगर का उपयोग ऐसी चीजों को करने के लिए कर सकते हैं जैसे "एक फाइल में त्रुटियों को लॉग करें, दूसरी ओर चेतावनियां, और नियमित जानकारी को तीसरे" –

उत्तर

3

आप एक कस्टम लकड़हारा लिख ​​सकते हैं जैसा कि यहां बताया: http://msdn.microsoft.com/en-us/library/ms171471.aspx

यहाँ आप आरंभ करने के लिए कोड का एक सा है:

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."); 
    } 
} 

यह लकड़हारा लॉग चेतावनी, त्रुटियों और त्रुटियों और चेतावनियों की मात्रा का सारांश देता है। आपको समय और परियोजनाओं के लिए थोड़ा सा कोड जोड़ना होगा, ताकि यह वही हो जो आप चाहते हैं।

इसका इस्तेमाल करने के लिए, आप निम्न पैरामीटर से जोड़ रहे है साथ MSBuild फोन:

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

एक सोचा एक लॉग फ़ाइल से आवश्यक जानकारी निकालने के लिए किया जाएगा।

इस तरह,

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 

उदाहरण:

@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 

आशा इस मदद करता है!

संबंधित मुद्दे