我在Visual Studio 2017中有一个C#解决方案。我还有一个名为foobar.bat
的批处理脚本,其中包含以下代码:
echo foobar : error 1: This is a test error.
我的目标是在构建特定项目时,只让测试错误信息出现在Visual Studio的错误列表中,并且当它出现时停止构建。因此,我将[脚本路径]\foobar.bat
放入项目的后期构建事件命令行中,然后进行构建。现在,在Visual Studio的错误列表中,我得到了两条错误消息:
"[脚本路径]\foobar.bat" 命令已退出并带有代码-1。
This is a test error.
在这种情况下,看到第一条只打印出我的后期构建事件内容的错误消息没有用。我想要抑制这个初始错误,以便只显示我的自定义错误消息(或者至少将其更改为更有用的内容)。
以下是我尝试过的方法:
- 在我的批处理脚本末尾添加
2>nul
没有效果。 - 在我的批处理脚本末尾添加
1>nul
会抑制两个错误,这不是我想要的。 - 在我的批处理脚本末尾添加
&set errorlevel=0
没有效果。 - 在我的批处理脚本末尾添加
exit 0
没有效果。 - 根据this article在我的.csproj文件末尾添加以下内容可以抑制第一个错误,但会使构建不再失败:
<Target
Name="PostBuildEvent"
Condition="'$(PostBuildEvent)'!=''"
DependsOnTargets="$(PostBuildEventDependsOn)">
<Exec WorkingDirectory="$(OutDir)" Command="$(PostBuildEvent)" IgnoreExitCode="true" />
</Target>
最后一个选项几乎满足我的需求。但是尽管有错误提示,错误列表并没有弹出,构建也没有失败。似乎任何导致初始错误消息不出现的情况都会导致构建不再失败。是这样吗?还是有某种方法可以使构建失败而不显示初始错误消息?