我在 Visual Studio 2017 中有一个 C# 解决方案。我还有一个名为的批处理脚本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>
最后一个选项几乎让我得到了我想要的。但是,尽管有错误消息,但错误列表不会弹出,构建也不会失败。似乎任何会导致初始错误消息不出现的东西也会导致构建不再失败。是这样吗?或者有什么方法可以让构建失败而不显示初始错误消息?