devenv.com/exe 的退出代码是什么?

What are the exit codes for devenv.com/exe?

任何命令行应用程序 return 代码作为退出代码通知主机环境指令的最终状态。 VS命令行:devenv.comreturn个代码。尽管没有(或者我找不到)这样的列表或 post 与此有关。有文档吗?如果没有,VS 团队的任何人都可以在此处记录下来吗?

%errorlevel% (cmd.exe) 或 $LASTEXITCODE (Powershell) 将在成功时设置为 0,任何其他值表示 msbuild.exe 失败或 devenv.exe.

在 Visual Studio 2019 build 16.11.2 中,我发现使用 devenv.exe 执行构建总是将 ERRORLEVEL 设置为 0,而使用 devenv.com 如果构建失败则将 ERRORLEVEL 设置为正数,如果构建成功则设置为 0。 devenv.com 也会等待构建完成,然后再将控制权返回给 shell。 devenv.comdevenv.exe 都支持 /Out 参数来指定一个显式记录文件。此外,devenv.com 生成控制台输出,如果不需要,可以将其重定向到 nul

所以,运行ning通过Windows批处理文件构建,你可以运行devenv.com,然后立即检查失败:

"C:\path\to\devenv.com" "my-solution.sln" /Rebuild "Release|x64" /Out "my-solution-build.log" > nul
if ERRORLEVEL 1 echo Error %ERRORLEVEL% building my-solution.sln & goto my-failed-build-label
echo Build succeeded
. . .

在上面的示例中,如果 ERRORLEVEL 设置为 1 或更高.

每个项目中的 post-build 事件都有可能遇到错误情况并设置 ERRORLEVEL,例如:

rem This is in a post-build event for a project
if not exist "path-to-expected-build-output.exe" exit /b 3

devenv.com 退出时,这些 post-build ERRORLEVEL 可能会被吞并并转换为 ERRORLEVEL,例如 1。