我在我的C++ Visual Studio2010项目中有一个构建后事件,它使用命令xcopy
,但是当这个xcopy返回错误代码(>0)时,所有构建也失败了,并且消息“构建不成功”,我如何在构建事件中关闭错误敏感性?
谢谢!
发布于 2013-01-21 18:50:31
您可以使用Exec
任务的IgnoreExitCode
<Target Name="MyAwesomePostBuildTarget" AfterTargets="Build">
<Exec IgnoreExitCode="true" Command="xcopy etc. etc." />
</Target>
发布于 2013-01-21 19:16:34
您可以通过将|| exit /b 0
附加到命令的末尾来覆盖(几乎)任何批处理命令的失败结果。示例:
del somefile.txt || exit /b 0
在这种情况下,批处理文件的工作方式有点像C。您可以执行&&,以便在前一个命令成功时有条件地运行命令,并||在前一个命令失败时运行命令。
exit /b 0
告诉CMD处理器退出脚本并将errorlevel设置为零(0)。永远不要忘记包含/b开关!如果没有它,CMD将退出调用脚本以及当前脚本,而当前脚本很少出现所需的行为。
我在Visual Studio IDE中使用了这个技巧,所以不需要进行低级的项目修改。它可以放在一行中,这也是IDE的便利之处。
顺便说一句,另一个有用的技巧是使命令静默:
xcopy srcfile destfile 1>nul 2>nul || exit /b 0
1
是标准输出,2
是标准错误。众所周知,Windows shell程序套件对于它们可能使用的输出是不一致的,所以我通常只使用两个输出或两个都不使用。
https://stackoverflow.com/questions/14445187
复制