我有我的Windows外殼配置爲在白色背景上顯示黑色文本。這使得讀取默認的msbuild輸出幾乎是不可能的,因爲顏色很淺(特別是黃色的警告)。是否有可能防止MSBuild打印colourized輸出
因此,我想嘗試以下其中一項,但如果可能,我無法解決。
- 我想設置一個全局設置來永久關閉msbuild中的colourized輸出;或
- 如果(1)不可能,可以將此輸出轉換爲每次調用(例如,使用命令行參數)。
有沒有人知道如何做上述之一?
我有我的Windows外殼配置爲在白色背景上顯示黑色文本。這使得讀取默認的msbuild輸出幾乎是不可能的,因爲顏色很淺(特別是黃色的警告)。是否有可能防止MSBuild打印colourized輸出
因此,我想嘗試以下其中一項,但如果可能,我無法解決。
有沒有人知道如何做上述之一?
在的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""
是否有可能禁用輸出?但從
調用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輸出任何(有顏色的)消息,但我添加了它以達到很好的效果。
注意這隻適用於MSBuild 4.0 – KMoraz 2012-03-02 07:05:31
@KMoraz良好的捕獲。謝謝。 – 2012-03-02 07:16:42
請注意,這對於[this one](http://stackoverflow.com/q/9523644/21567)有點重複/相關問題。我不會主張關閉它,但你也可以看看另一個。 – 2012-03-02 06:55:29