2012-03-01 57 views
3

默认的MSBuild记录器可以在控制台窗口中对输出行进行很好的颜色编码 - 如果恰好使用控制台窗口的默认黑色背景。我发现在控制台窗口中使用灰色背景上的黑色文字可以让我的眼睛更加轻松。 (白底黑字太亮)可以修改默认MSBUILD记录器中使用的颜色吗?

当我们的项目运行MSBUILD时,输出结果会出现一些灰色的现在难以读懂的青色部分行。黄色和红色的线条并不差。

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

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

是否有第三方自定义记录器可用,可能允许这种自定义或正在编写我自己的自定义记录器唯一选项? (我们可以,但是这样做的时间很难。)

+0

是使用PowerShell的选项吗? [Linked](http://stackoverflow.com/a/9513340/147211) – KMoraz 2012-03-01 21:26:20

+0

可能。这将如何工作?一些方法来修改或做一个颜色转换(“使所有青色输出到控制台蓝色”?) – RobDavenport 2012-03-02 04:42:14

+0

我已经张贴我的镜头在这。我认为PowerShell脚本编写者可以做得更好。 – KMoraz 2012-03-02 08:47:10

回答

2

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

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

+0

谢谢。我以前很怕那个。 (但不是每个人都喜欢黑色的控制台窗口... :)也许在未来的版本。我喜欢彩色输出,所以我不想禁用它,只是改变它。我会尝试KMoraz的powershell脚本,看看这对我有用。 – RobDavenport 2012-03-04 19:00:16

+0

编写自己的记录器的例子看起来是可以理解的,我也必须看看。感谢您的链接。 – RobDavenport 2012-03-04 19:32:36

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} 
    } 
} 
+0

谢谢,KMoraz,我会试试看。 – RobDavenport 2012-03-04 18:51:42