【问题标题】:Visual Studio pre-build event; Checking exit code for each eventVisual Studio 预构建事件;检查每个事件的退出代码
【发布时间】:2013-04-11 06:42:40
【问题描述】:

我有一个包含多个项目的解决方案。如果两个事件在预构建事件中都以错误代码 0 退出,则一个项目只需要构建。

所以我想我可以做到以下几点:

"C:\Path\To\Binary1.exe" & "C:\path\to\binary2.exe"

在我的测试场景中出现问题,因此 Binary1.exe 以非零值退出。但无论如何,Visual Studio 都会继续构建该项目。 当我在 cmd 中运行预构建事件命令行并 echo %errorlevel% 时,我看到退出代码非零。

当我只放了

"C:\Path\To\Binary1.exe"

在预构建事件中,构建停止,并且在 Visual Studio 的Error List 窗口中显示错误。

我确信 Binary1.exe 正在以非零值退出,因为它还在退出前显示了一个消息框。

我能想到一种解决方案。当 Binary2.exe 以非零退出代码退出时,Binary1.exe 调用 Binary2.exe 并以非零退出代码退出。但这并不是一个真正灵活的解决方案。

总结一下: 当其中一个命令返回非零值时,如何运行多个预构建事件并停止构建?

【问题讨论】:

    标签: visual-studio events exit-code pre-build-event


    【解决方案1】:

    如果两个项目在同一个解决方案中,可以在 Visual Studio 中设置依赖关系。 在解决方案资源管理器中右键单击解决方案,然后选择“项目依赖项”。

    将“最后一个”项目设置为取决于前两个项目。在这种情况下,Visual Studio 将以正确的顺序构建,如果其中一个依赖项构建失败,它将停止构建。 (Visual Studio 2013)

    【讨论】:

    • 这与项目依赖无关。它与预构建事件有关,当预构建事件中调用的任一可执行文件失败时,该事件应该会失败。我的问题更多关于预构建事件语法(或一般的 cmd 语法?)。
    【解决方案2】:

    我认为你可以这样做:

    run command 1
    if ERRORLEVEL 1 (
        exit /b 1
        )
    run command 2
    

    【讨论】:

    • 或者你可以像if %errorlevel% == 0 ( Do something)这样检查命令shell环境变量。
    猜你喜欢
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 2018-07-20
    • 1970-01-01
    相关资源
    最近更新 更多