取消

命令“"xxx.exe" xxx”已退出,代码为 3/123/9009。VS 的这些编译错误代码代表了什么意思?

我们在 cmd 中输入常见命令的时候,如果命令输入错误或使用错误,cmd 中会提示错误原因,帮助我们定位并解决问题。然而如果相同的命令放到了 Visual Studio 的生成事件中,我们就只能得到 Visual Studio 返回的错误代码了。为了能够快速地根据错误代码大致猜测错误原因,本文整理了一部分错误代码的通用原因。


1
命令“"xxx.exe" xxx”已退出,代码为 n。

命令的格式为:

命令 参数1 参数2 参数3

错误代码: 3

系统找不到指定的路径。

这意味着我们在编译生成命令中写的“命令”部分,在那个路径下并不存在命令中写的可执行文件。比如:

  • 文件或文件夹的名称写错了,或者写上级目录时“..”的层数不对
  • 依赖的是一部分人开发环境中才有的可执行文件,如果你的开发环境中没有这个文件,就会是此错误
  • 依赖的文件需要提前生成但还没有生成,某些 BT 的项目会要求先执行一些编译命令以生成命令的可执行文件

错误代码: 123

文件名、目录名或卷标语法不正确。

如果路径字符串根本无法拼出路径,就会引发此错误。比如:

  • D:\walterlv.github.io\D:\Bin\Debug 这样的路径就是不合理的

一般人当然不会写出这样的命令出来,但如果路径中间有一些环境变量作为占位符,实际执行时本来期望填入相对路径的地方填入了绝对路径就会这样。

错误代码: 9009

‘xxx’ 不是内部或外部命令,也不是可运行的程序或批处理文件。

  • 命令写错了,而不是可执行文件写错了
    • 比如 xcopy 写成了 xcapy
  • 可执行文件因为缺少引号包括路径中的空格,导致被识别成无法识别的命令
    • 比如 C:\Program Files\XXX 因为没有引号的包裹,被识别成了 C:\Program 命令

持续整理中……

本文会经常更新,请阅读原文: https://blog.walterlv.com/post/error-code-in-vs-build-events.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 ([email protected])

登录 GitHub 账号进行评论