2010-11-10 34 views
2

如果我從喜歡修剪的MSBuild FileLogger輸出

 
    MSBuild MyProject.dproj /t:Rebuild /p:Configuration=Release /l:FileLogger,Microsoft.Build.Engine;logfile=log.txt;verbosity=minimal 

我得到這個日誌文件的命令行編譯這個2007年德爾福項目

program MyProject; 

{$APPTYPE CONSOLE} 

procedure Test; 
var 
    i: Integer; 
begin 
    if i = 666 then 
    i := 42; 
end; 

begin 
    Test; 
end. 

 
    __________________________________________________ 
    Projekt C:\Documents and Settings\pcbs1251\My Documents\RAD Studio\Projekte\MyProject\MyProject.dproj (Rebuild-Ziel(e)): 

    C:\Program Files\CodeGear\RAD Studio\5.0\bin\dcc32.exe -B -DRELEASE [SNIP] MyProject.dpr 
    CodeGear Delphi für Win32 Compiler-Version 18.5 
    Copyright (c) 1983,2007 CodeGear 

    MyProject.dpr(10) Hinweis: H2077 Auf 'i' zugewiesener Wert wird niemals benutzt 

    c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Borland.Delphi.Targets : warning : MyProject.dpr(9) Warnung: W1036 Variable 'i' ist möglicherweise nicht initialisiert worden 
    MyProject.dpr(9) Warnung: W1036 Variable 'i' ist möglicherweise nicht initialisiert worden 

    17 Zeilen, 0.00 Sekunden, 11016 Byte-Code, 12156 Byte-Daten. 
    Erstellen des Projekts MyProject.dproj beendet. 

現在我想將其修整爲

 
    MyProject.dpr(10) Hinweis: H2077 Auf 'i' zugewiesener Wert wird niemals benutzt 
    MyProject.dpr(9) Warnung: W1036 Variable 'i' ist möglicherweise nicht initialisiert worden 

是否有任何FileLoggerParameters來做到這一點?

更新:由於似乎沒有辦法讓MSBuild做我想做的事情,所以最後我寫了一個小小的Delphi程序來格式化MSBuild輸出以滿足我的需求。

+0

你能給我們多一點情景嗎?你想在哪裏看到這個輸出? – 2010-11-10 17:51:38

+0

@Jay:以「Erstellen ... beendet」結尾的塊。是FileLogger當前寫入log.txt的內容。我寧願讓它寫兩行代碼塊。沒有版權,沒有摘要,沒有重複的警告等。 – 2010-11-11 07:38:09

+0

爲什麼?你的過程中的下一步是什麼? – 2010-11-11 17:34:25

回答

3

我通常使用grep,sed和awk來做這樣的事情。

+1

感謝您的回答!看來後面的操作是要走的路。這看起來有些浪費:首先,MSBuild使計算機更難以生成所有多餘的輸出,並且我必須在之後努力破壞這項工作。 :-) – 2010-11-11 09:39:11

+0

順便說一句:爲什麼控制檯輸出中的錯誤/警告/提示信息是重複的?我先看到一條彩色線條(例如黃色警告和暗灰色提示),然後是淺灰色線條。這是一個dcc32或MSBuild的東西? – 2010-11-11 09:42:30

+0

我終於寫了一個小小的Delphi程序來做到這一點。看起來比在我的批處理文件中加入隱祕的命令行調用更容易。 ;-) – 2010-11-11 13:07:12

2

嘗試msbuild /v:m。這將msbuild命令行的詳細程度設置爲「minimal」。它可能會給你更接近你想要的東西。看'msbuild /?'尋求幫助。

許多命令行工具都有'/ nologo'選項可以提供幫助。也許你可以把它傳遞給dcc。也許你將不得不編輯.targets文件。

+0

謝謝,但是/ v:m似乎沒有什麼區別,可能是因爲我在FileLogger中指定了'verbosity = minimal'。而且我不想惹惱已安裝的.Targets文件。 – 2010-11-11 07:45:34