2011-10-11 7 views
7

Bina .net çözümleri için bir toplu iş dosyası var ve hangi proje ve herhangi bir uyarı ve/veya hataları gösteren yalnızca gösterme asgari düzeyde olmak için ayrıntı düzeyini almaya çalışıyorum Sonunda, uyarıların ve hataların sayısının yanı sıra yapım süresinin de bulunduğu özeti de görmek isterim.msbuild: Her neyse özeti göstermek ve kullanmak için <a0></ a0> = minimum

Ben ayrıntı ve/v ve/cpl çoklu kombinasyonlar denedim ama sadece çok fazla çıkış + özetini veya sağ asgari çıktı ve hiçbir özetini

herhangi bir fikir elde edebilirsiniz görünüyor? peşin

Teşekkür

, burada açıklandığı şekilde özel bir logger yazabilir
+0

Ayrıca bu memeli yollarını denedim ve bunun mümkün olduğunu düşünmüyorum ... Merak etme, standart çıktıda neyin yanlış olduğu? Ben yapı sorunları hata ayıklama çok yardımcı olduğunu buldum ve kolayca bir 'cls' çağrı ile silinebilir –

+0

@NickNieslanik Çözüm için standart çıktı büyük ve komut istemi tamponu (değişiklik olmadan) izin verecek kadar büyük değil tam konsol çıktısını gözden geçirirsiniz, ayrıca çıktı dosyasının birçoğu gibi kopyalanan dosya, silinmiş dosya –

+3

İlgilenmiyorum Neden Dosya Kaydı arabelleği kullanma komut istemi arabelleği sorununu kullanmıyor musunuz? Bu sorunlardan en az birini hafifletir. Dosya kaydedicisini "bir dosyaya hata ayıkla, diğerine uyarılar ve 3. sayfaya düzenli bilgi" gibi şeyler yapmak için kullanabilirsiniz –

cevap

3

: Burada

http://msdn.microsoft.com/en-us/library/ms171471.aspx başlamak için kod biraz:

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

Bu logger kaydeder Uyarılar, Hatalar ve Hata ve uyarı miktarını özetler. Zaman ve projeler için biraz kod eklemeniz gerekecek, böylece tam olarak istediğiniz gibi.

Kullanmak için, buna eklenen aşağıdaki parametreleri içeren MSBuild çağrı:

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

bir düşünce bir günlük dosyası gerekli bilgi ayıklamak olacaktır. Bunun gibi

,

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 

Örnek: Bu yardımcı olur

@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 

Umut!

İlgili konular