Можно ли изменить цвета, используемые в стандартном логгере MSBUILD? - PullRequest
3 голосов
/ 02 марта 2012

Регистратор MSBuild по умолчанию выполняет красивое цветовое кодирование выходных строк в окне консоли - если вы используете черный фон по умолчанию для окон консоли. Я считаю, что использовать черный текст на сером фоне в окнах консоли проще для глаз. (черное на белом слишком яркое.)

При запуске MSBUILD для наших проектов на некоторых строках выводится трудно читаемый голубой цвет на сером. Желтые и красные линии не так плохи.

Есть ли способ настроить цвета, используемые регистратором MSBUILD по умолчанию? Возможно, подправить какой-нибудь XML-файл в установленных файлах VS2010? (Мы используем VS2010.)

Я нашел параметр MSBUILD "consoleloggerparameters", но он, похоже, не предлагает такую ​​функцию.

Существуют ли сторонние настраиваемые регистраторы, которые могут позволить такую ​​настройку, или единственная возможность написать свой собственный настраиваемый регистратор? (Мы могли бы, но время для этого трудно найти.)

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

Цвета в основном жестко закодированы. В MSBuild 4.0 вы можете полностью отключить цвета, используя опцию /clp:disableconsolecolor при вызове MSBuild.exe (для получения дополнительной информации о опции /clp запустите MSBuild.exe /?). В старых версиях MSBuild вы можете использовать MSBuild.exe arguments 2>&1| findstr /r ".*". См. этот ответ для более подробной информации.

Если вы хотите иметь разные цвета, вам нужно реализовать собственный собственный (консольный) регистратор , который не слишком сложен, и использовать эту опцию (/logger: в сочетании с /noconsolelogger для отключить консольный логгер по умолчанию).

0 голосов
/ 02 марта 2012

Используя 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}
    }
}
...