2011-10-11 3 views
7

.net 솔루션 빌드를위한 배치 파일이 있으며 최소한의 자세한 정보를 얻으려고 노력 중이며 어떤 프로젝트가 빌드 중이며 경고 및/또는 오류 만 표시하지만 또한 경고 및 오류 수에 빌드 시간을 더한 끝에 요약을보고 싶습니다.msbuild : 어쨌든 요약을 표시하고 자세한 정보 표시 =

나는 상세 및/V 및/CPL의 여러 조합을 시도하지만 당신은 너무 많은 출력 + 요약 또는 오른쪽으로 최소한의 출력없이 요약

어떤 아이디어를 얻을 수있는 것? 사전에

감사

여기에 설명 된대로 사용자 정의 로거를 작성할 수
+0

나는 또한이 마녀 방법을 시도했는데 그것이 가능하지 않다고 생각합니다 ... 호기심에서 표준 출력에 어떤 문제가 있습니까? 나는이 문제가 빌드 문제를 디버깅하는 데 매우 유용하며 'cls'호출로 쉽게 지워질 수 있음을 확인했습니다. –

+0

@NickNieslanik 솔루션의 표준 출력 크기가 커서 명령 프롬프트 버퍼가 수정되지 않고 당신은 전체 콘솔 출력, 복사 된 파일, 삭제 된 파일과 같은 출력을 많이 검토합니다. –

+3

에 관심이 없습니다. 왜 File Logger를 사용하여 명령 프롬프트 버퍼 문제를 해결하지 않습니까? 이 문제 중 적어도 하나는 완화 될 것입니다. 파일 로거를 사용하여 "한 파일에 오류를 기록하고 다른 파일에 경고를, 세 번째 파일에는 일반 정보를 기록" –

답변

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

이 로거는 로그 경고, 오류 및 오류 및 경고의 양을 요약합니다. 시간과 프로젝트를위한 약간의 코드를 추가해야합니다. 그러면 원하는대로 바로 사용할 수 있습니다.

그것을 사용하려면, 당신은 추가 다음 PARAMS와의 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 

희망!

관련 문제