Visual Studio 预构建事件;检查每个事件的退出代码。

5
我有一个包含多个项目的解决方案。其中一个项目只有在两个事件都以错误代码0退出时才需要构建。
所以我想可以这样做:
"C:\Path\To\Binary1.exe" & "C:\path\to\binary2.exe"
但在我的测试场景中,Binary1.exe 以非零值退出,但 Visual Studio 仍然继续构建该项目。当我在 cmd 中运行 pre-build 事件命令行并回显 %errorlevel% 时,我看到退出代码为非零。
如果我只在 pre-build 事件中放置 "C:\Path\To\Binary1.exe",则构建将停止,并且在 Visual Studio 的“错误列表”窗口中显示错误。
我确信 Binary1.exe 以非零值退出,因为它在退出之前还显示了一个消息框。
我可以想到一种解决方案:Binary1.exe 调用 Binary2.exe 并在 Binary2.exe 以非零退出代码退出时以非零退出代码退出。但这不是一个真正灵活的解决方案。
总结一下:如何运行多个 pre-build 事件并在其中一个命令返回非零值时停止构建?
2个回答

4
我认为您可以按照以下方式操作:
run command 1
if ERRORLEVEL 1 (
    exit /b 1
    )
run command 2

你可以使用以下命令检查命令行环境变量:if %errorlevel% == 0 ( Do something) - RBT

2
如果这两个项目在同一个解决方案中,您可以在Visual Studio中设置依赖项。 在解决方案资源管理器中右键单击解决方案,然后选择“项目依赖项”。 将“最后”一个项目设置为依赖于前两个项目。在这种情况下,Visual Studio将按正确的顺序进行构建,并且如果其中一个依赖项无法构建,则会停止构建。 (Visual Studio 2013)

这与项目依赖关系无关,而是与预构建事件有关。当预构建事件中调用的任何一个可执行文件失败时,该事件应该失败。我的问题更多地涉及到预构建事件语法(或者一般的cmd语法?)。 - Mike de Klerk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接