2012-02-29 17 views
1

我有我的Windows外殼配置爲在白色背景上顯示黑色文本。這使得讀取默認的msbuild輸出幾乎是不可能的,因爲顏色很淺(特別是黃色的警告)。是否有可能防止MSBuild打印colourized輸出

因此,我想嘗試以下其中一項,但如果可能,我無法解決。

  1. 我想設置一個全局設置來永久關閉msbuild中的colourized輸出;或
  2. 如果(1)不可能,可以將此輸出轉換爲每次調用(例如,使用命令行參數)。

有沒有人知道如何做上述之一?

+0

請注意,這對於[this one](http://stackoverflow.com/q/9523644/21567)有點重複/相關問題。我不會主張關閉它,但你也可以看看另一個。 – 2012-03-02 06:55:29

回答

1

的MSBuild 4.0這是可能的使用/consoleloggerparameters/clp開關:

msbuild C:\some_path\your.sln /clp:disableconsolecolor 

可選地,對於先前的MSBuild發動機,這是可能的使用的PowerShell

Out-Host將顯示默認顏色:

Powershell -Command "msbuild C:\some_path\your.sln | out-host" 

Write-Host將讓你自定義顏色:

Powershell -Command "msbuild C:\some_path\your.sln | write-host -foreground "white"" 
+0

是否有可能禁用輸出?但從 2014-10-06 10:54:22

0

調用MSBuild.exe(有關/clp選項運行MSBuild.exe /?更多信息)時,要完全禁用顏色使用/clp:disableconsolecolor選項。

更新由於@KMoraz已評論,並更新了他的答案,這隻適用於MSBuild 4.0以上。

如果要禁用彩色輸出,您還可以使用以下(這將用的MSBuild 4.0工作):

MSBuild.exe arguments > CON 2>&1 

這讓我好奇;-)所以這裏是一個多選項應該MSBuild.exe的所有版本,不依賴於CON重定向:

MSBuild.exe arguments 2>&1| findstr /r ".*" 

基本上,什麼情況是,輸出的所有行都是通過管道輸送findstr.exe因爲使用AP attern來匹配「所有」,所有行都會再次輸出,但是會丟失它們的屬性(顏色)信息。在我的測試中,2>&1(將stderr重定向到stdout)並不是真的必要,因爲它看起來MSBuild不會向stderr輸出任何(有顏色的)消息,但我添加了它以達到很好的效果。

+1

注意這隻適用於MSBuild 4.0 – KMoraz 2012-03-02 07:05:31

+0

@KMoraz良好的捕獲。謝謝。 – 2012-03-02 07:16:42