Я работаю над проектом C#, в котором используется Azure DevOps для CI. У меня есть файл оболочки питания, который запускается, когда проект отправляется в Azure. Соответствующая часть файла сборки:
# $buildTools is the path to MSBuild.exe
# $solution is the path to the project's .sln file
& $buildTools $solution /t:Clean,Build /p:Configuration=Release,Platform=x86
if ($LASTEXITCODE -eq 0) {
Write-Host 'Build completed successfully!'
} else {
Write-Host '##vso[task.logissue type=error;]There were errors during the build of the application'
}
В настоящее время $LASTEXITCODE может быть либо 0 (no errors), либо 1 (error). Если код выхода равен 0, все в порядке, и Azure показывает зеленый значок передачи; если он равен 1, Azure показывает красный значок ошибки. Однако когда в сборке появляются предупреждения, они отображаются в журналах, а в Azure отображается зеленый значок.
Моя цель - заставить Azure отображать желто-оранжевый значок предупреждения при наличии предупреждений. Возможно ли это и как? Спасибо вам большое за ваше время!
В свойствах проекта C# для Warning level установлено значение 4; поэтому я попробовал эту модификацию скрипта Power Shell, но это не сработало.
& $buildTools $solution 4> 'warning.txt'
Спасибо Ответ Диджея! Финальная строка сборки выглядит так:
# $warningsFile is a path to a file that will contain all the warnings
& $buildTools $solution /t:Clean,Build /p:Configuration=Release,Platform=x86 /fl1 "/flp1:$warningsFile;warningsonly"





Вы можете использовать это -> https://docs.microsoft.com/en-us/visualstudio/msbuild/obading-build-logs-with-msbuild?view=vs-2017#save-the-log-output-to-multiple-files и записывать все предупреждения в файл журнала, затем проверять, содержит ли файл журнала что-либо, а затем записывать предупреждения в вывод с помощью этих команд (https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md)
заключите свой список аргументов в "
Это вообще не работает, когда я заключаю аргументы в ", даже если я удаляю часть /fl /flp, это вызывает ошибку из-за ".
Я нашел решение! Если я оберну только часть /fl /flp с ", она будет работать, как ожидалось. Еще раз спасибо!
Спасибо, что подарили мне надежду! Я изменил строку сборки на
& $buildTools $solution /t:Clean,Build /p:Configuration=Release,Platform=x86 /fl1 /flp1:warningsonly;logfile=$warningsFile, где$warningsFile- это путь к файлу в том же каталоге. Однако эта строка вызывает следующую ошибку:The term 'logfile=$warningsFile' is not recognized as the name of a cmdlet, function, script file...Что вы порекомендуете мне попробовать дальше?