VS2019前后构建事件始终会失败,代码为1

时间:2019-12-18 08:28:24

标签: visual-studio batch-file cmd visual-studio-2019

我只有一个echo Hello生成后事件的解决方案,但总是失败,并显示消息The command "echo Hello!" exited with code 1.

有人知道会出什么问题吗?

更多信息:

  • 我们有一个由15名开发人员组成的团队。总是只有其中3个失败
  • 我们拥有所有 Windows 10 VS2019
  • 我们尝试了不同的脚本,并以echo Hello
  • 结尾
  • 我们尝试了生产解决方案,也尝试了一个空解决方案

完整错误消息:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\
Microsoft.Common.CurrentVersion.targets(1328,5): 
error MSB3073: The command "echo Hello!" exited with code 1.

编辑

只需将具有工作事件的开发人员的 Microsoft.Common.targets 文件与具有非工作事件的开发人员进行比较。它们具有相同的内容。

2 个答案:

答案 0 :(得分:0)

我前面没有Visual Studio来测试这一点,但是问题似乎是ERRORLEVEL有时(随机吗?)在进入构建后脚本时不为零。

问题在于ECHO不会影响ERRORLEVEL

dir FileThatDoesNotExist                 Gives "File not found".
echo %ERRORLEVEL%                        Prints "1" ... an error.
echo Hello                               Prints "Hello".
echo %ERRORLEVEL%                        Still prints "1".

因此,如果错误级别碰巧为非零,则不会通过ECHO命令将其重置。 (据我所知,REM都没有影响它)。可能还有其他方法,但是DIR . > nul似乎可以将ERRORLEVEL重置为零(应该始终可以在DIR上运行当前目录!)。重定向应停止输出出现在构建日志中。

很显然,如果构建后脚本中有一个较早的命令失败了,那么您可能不想忽略它。但是,您所看到的模式(一些用户失败,一些工作)表明,由于某种原因,Visual Studio有时会以非零错误级别启动生成后脚本:使用空脚本或仅使用{{ 1}}命令,最终将作为构建后阶段和您所看到的问题的“结果”。

在脚本的顶部添加ECHO应该确保重置退出代码(并在以后的脚本中检测到 real 失败)。

答案 1 :(得分:0)

所以问题是用户名。我们公司有一些自由职业者,他们的用户名以一些特殊字符开头。我不记得是哪一个,但我想下划线。因此,当管理员按用户名对用户进行排序时,他们会排在最前面。

更改用户名解决了我们所有情况下的问题-_-