3

我的 C++ Visual Studio 2010 项目中有一个构建后事件,它使用 command xcopy,但是当这个 xcopy 返回错误代码(> 0)时,所有构建也失败并消息“构建不成功”,我怎样才能在构建事件?

谢谢!

4

2 回答 2

6

您可以使用Exec任务的IgnoreExitCode

<Target Name="MyAwesomePostBuildTarget" AfterTargets="Build">
  <Exec IgnoreExitCode="true" Command="xcopy etc. etc." />
</Target>
于 2013-01-21T18:50:31.047 回答
1

|| exit /b 0您可以通过附加到命令末尾来覆盖(几乎)任何批处理 CMD 的失败结果。例子:

del somefile.txt || exit /b 0

这样,批处理文件的工作方式有点像 C。您可以使用 && 来在前一个命令成功时有条件地运行命令,而 || 在前一个命令失败时运行命令。

exit /b 0告诉 CMD 处理器退出脚本并将错误级别设置为零 (0)。永远不要忘记包含 /b 开关!没有它,CMD 将退出调用脚本以及当前脚本,这很少(如果有的话)是所需的行为。

我使用 Visual Studio IDE 中的这个技巧,因此无需进行低级项目黑客攻击。它适合一行,这在 IDE 中也很方便。

顺便说一句,另一个有用的技巧是使命令静音:

xcopy srcfile destfile 1>nul 2>nul || exit /b 0

1是标准输出,2是标准错误。众所周知,Windows 的 shell 程序套件在它们可能使用的输出方面不一致,所以我通常只管两者或都不管。

于 2013-01-21T19:16:34.377 回答