Can colors used in default MSBUILD logger be modif

2019-02-25 07:30发布

The default MSBuild logger does nice color-coding of output lines in the console window - if you happen to use the default black background for console windows. I find using black text on gray background in console windows to be easier on my eyes. (black on white is too bright.)

When running MSBUILD for our projects, the output comes out a now-hard-to-read cyan on gray for some lines. The yellow and red lines aren't as bad.

Is there a way to customize the colors used by the default MSBUILD logger? Perhaps tweaking some XML file in the VS2010 installed files? (We're using VS2010.)

I found the MSBUILD parameter "consoleloggerparameters" but it doesn't appear to offer such a feature.

Are there third-party custom loggers available that might allow such customization or is writing my own custom logger the only option? (We could, but time to do so is hard to come by.)

2条回答
劫难
2楼-- · 2019-02-25 07:58

The colors are basically hardcoded. What you can do out of the box, with MSBuild 4.0, is completely disable colors using the /clp:disableconsolecolor option when invoking MSBuild.exe (for more information on the /clp option run MSBuild.exe /?). With older MSBuild versions you can use MSBuild.exe arguments 2>&1| findstr /r ".*". See this answer for more details.

If you want to have different colors, you need to implement your own (console) logger, which is not too hard, and use that (/logger: option, combined with /noconsolelogger to turn off the default console logger).

查看更多
戒情不戒烟
3楼-- · 2019-02-25 08:02

Using PowerShell, I suppose PS enthusiasts can provide a better script:

#
# 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}
    }
}
查看更多
登录 后发表回答