Вы правы, аргументы командной строки msbuild не просто передаются в csc.exe, особенно для /warnaserror.
Несмотря на то, что не найден действительный документ, который описывает отношения между/warnaserror
в msbuild и в css.Есть что-то различие между warnaserror в опциях msbuild и в опциях csc.
В msbuild: Описание этого: Когда предупреждение рассматривается как ошибка, цель будет продолжать выполняться, как если бы это было предупреждениено общая сборка не удастся.(Мы можем увидеть это по msbuild /help).
Но в C # compile (csc): примечание таково: любые сообщения, которые обычно сообщаются как предупреждения, вместо этого сообщаются как ошибки,и процесс сборки останавливается (выходные файлы не создаются).
Когда мы собираем проект в первый раз, если мы используем msbuild / warnaserror.Ошибка будет распознана и отображена в «CoreCompile» Target, а скриншот будет следующим: Да, сборка не удалась.Но, как упоминалось выше, цель будет продолжать выполняться, когда using /warnaserror in msbuild
, что привело к выводу файла .exe в папку obj, а затем в папку bin.
Но для /p:TreatWarningsAsErros=true
, если мы используем его для сборки в первый раз.Сборка завершится неудачно, как при использовании / warnaserror в msbuild, но difference is the message should be /target:exe /warnaserror+ /utf8output instead of /target:exe /utf8output.
Это означает, что когда using /warnaserror in msbuild
, он не работает как /warnaserror in CSC
.Вместо этого /p:TreatWarningsAsErros=true seems to work as calling the /warnaserror in CSC
.
И я думаю, что это разница между [/ warnaserror в msbuild] и [/ p: TreatWarningsAsErros = true и csc -warnaserror].Надеюсь, это поможет решить ваш вопрос.
Кроме того: Если вы хотите рассматривать предупреждения как ошибки и не хотите выводить их.Я предлагаю вам использовать / p: TreatWarningsAsErrors = true.И если по какой-то особой причине вам нужен вывод при обработке предупреждений как ошибок, вы можете выбрать /warnaserror.
Ожидая вашего ответа.