У меня есть решение C # в Visual Studio 2017. У меня также есть пакетный скрипт с именем foobar.bat
, который содержит следующий код:
echo foobar : error 1: This is a test error.
Моя цель - получить только тестовое сообщение об ошибке выше, которое будет отображаться в списке ошибок Visual Studio при создании конкретного проекта, а сборка останавливаться при его появлении. Поэтому я поместил [path to script]\foobar.bat
в командной строке проекта после сборки, а затем собрал. Теперь я получаю два сообщения об ошибках в списке ошибок Visual Studio:
The command "[path to script]\foobar.bat" exited with code -1.
This is a test error.
В этом случае просмотр первого сообщения об ошибке, в котором просто выводится содержимое моего события после сборки, не поможет. Я хочу подавить эту первоначальную ошибку, чтобы в списке ошибок отображались только мои пользовательские сообщения об ошибках (или, по крайней мере, измените их на что-то более полезное).
Вот что я пробовал:
- Добавление
2>nul
в конец моего пакетного скрипта не имеет никакого эффекта.
- Добавление
1>nul
в конец моего пакетного скрипта подавляет обе ошибки, а это не то, что я хочу.
- Добавление
&set errorlevel=0
в конец моего пакетного скрипта не имеет никакого эффекта.
- Добавление строки
exit 0
в конец моего пакетного скрипта не имеет никакого эффекта.
- Добавление следующего в конец моего файла .csproj (согласно этой статье ) подавляет первую ошибку, но делает так, чтобы сборка больше не заканчивалась неудачей:
<Target
Name="PostBuildEvent"
Condition="'$(PostBuildEvent)'!=''"
DependsOnTargets="$(PostBuildEventDependsOn)">
<Exec WorkingDirectory="$(OutDir)" Command="$(PostBuildEvent)" IgnoreExitCode="true" />
</Target>
Последний вариант почти дает мне то, что я хочу. Однако, несмотря на наличие сообщения об ошибке, список ошибок не появляется и сборка не происходит. Похоже, что все, что может привести к тому, что первоначальное сообщение об ошибке не появится, также не приведет к сбою сборки. Это тот случай? Или я могу каким-то образом заставить сборку завершиться с ошибкой без , показывающей это первоначальное сообщение об ошибке?