可以修改默认MSBUILD记录器中使用的颜色吗?

时间:2012-03-01 20:35:51

标签: logging powershell msbuild colors console

默认的MSBuild记录器在控制台窗口中对输出行进行了很好的颜色编码 - 如果您碰巧使用控制台窗口的默认黑色背景。我发现在控制台窗口的灰色背景上使用黑色文字更容易在我的眼睛。 (白底黑太亮了。)

在我们的项目中运行MSBUILD时,输出会出现一些现在难以读取的青色灰色部分线条。黄色和红色的线条并没有那么糟糕。

有没有办法自定义默认MSBUILD记录器使用的颜色? 也许调整VS2010安装文件中的一些XML文件? (我们正在使用VS2010。)

我发现了MSBUILD参数“consoleloggerparameters”,但它似乎没有提供这样的功能。

是否有可能允许此类自定义的第三方自定义记录器,或者是我自己编写自定义记录器的唯一选项? (我们可以,但是时间难以实现。)

2 个答案:

答案 0 :(得分:2)

颜色基本上是硬编码的。使用MSBuild 4.0,您可以开箱即用的功能是在调用/clp:disableconsolecolor时使用MSBuild.exe选项完全禁用颜色(有关/clp选项运行MSBuild.exe /?的更多信息)。使用较旧的MSBuild版本,您可以使用MSBuild.exe arguments 2>&1| findstr /r ".*"。有关详细信息,请参阅this答案。

如果您想要使用不同的颜色,则需要实施own (console) logger,这不是太难,并使用(/logger:选项与/noconsolelogger结合使用来关闭默认控制台记录器。)

答案 1 :(得分:0)

使用 PowerShell ,我想PS爱好者可以提供更好的脚本:

#
# Run MSBuild With Custom Color.ps1
#
msbuild C:\some_path\your.sln | foreach-object -process  { 
    switch ($_){
        { $_.tolower().contains("warning")} {Write-Host $_ -foregroundColor DarkBlue}
        { $_.tolower().contains("error")} {Write-Host $_ -foregroundColor DarkRed}  
        default {Write-Host $_ -foregroundColor Black}
    }
}