【问题标题】:Can colors used in default MSBUILD logger be modified?可以修改默认 MSBUILD 记录器中使用的颜色吗?
【发布时间】:2012-03-20 09:16:32
【问题描述】:

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

在为我们的项目运行 MSBUILD 时,某些行的输出是现在难以阅读的青色灰色。黄线和红线没那么糟糕。

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

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

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

【问题讨论】:

  • 是否可以选择使用 PowerShell? Linked
  • 可能。这将如何工作?某种修改或进行颜色转换的方法(“使控制台的所有青色输出为蓝色”?)
  • 我已经发布了我的照片。我认为 PowerShell 脚本编写者可以做得更好。

标签: logging powershell msbuild colors console


【解决方案1】:

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

如果你想有不同的颜色,你需要实现你的own (console) logger,这并不难,并使用它(/logger:选项,结合/noconsolelogger关闭默认的控制台记录器)。

【讨论】:

  • 谢谢。我以前很怕那个。 (但不是每个人都喜欢黑色控制台窗口...... :) 也许在未来的版本中。我确实喜欢彩色输出,所以我不想禁用它,只需更改它即可。我会试试 KMoraz 的 powershell 脚本,看看它对我有用。
  • 编写自己的记录器的示例看起来可以理解,我也必须看看。感谢您的链接。
【解决方案2】:

使用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}
    }
}

【讨论】:

  • 谢谢,KMoraz,我试试看。
  • switch case需要break语句。
猜你喜欢
  • 1970-01-01
  • 2017-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-03
  • 2014-01-28
  • 1970-01-01
相关资源
最近更新 更多