Visual studio VS2019生成前和生成后事件始终失败,代码为1

Visual studio VS2019生成前和生成后事件始终失败,代码为1,visual-studio,batch-file,cmd,visual-studio-2019,Visual Studio,Batch File,Cmd,Visual Studio 2019,我有一个只处理echo Hellopost-build事件的解决方案,它总是失败,并显示消息命令“echo Hello!”退出,代码为1。 有人知道会出什么问题吗 更多信息: 我们有一个团队,大约有15名开发人员。它总是只对其中三个失败 我们都有Windows 10和VS2019 我们尝试了不同的脚本,最后得到了echo Hello 我们尝试了prod解决方案,也尝试了空的解决方案 完整错误消息: C:\Program Files (x86)\Microsoft Visual Studio\

我有一个只处理
echo Hello
post-build事件的解决方案,它总是失败,并显示消息
命令“echo Hello!”退出,代码为1。

有人知道会出什么问题吗

更多信息:
  • 我们有一个团队,大约有15名开发人员。它总是只对其中三个失败
  • 我们都有Windows 10和VS2019
  • 我们尝试了不同的脚本,最后得到了
    echo Hello
  • 我们尝试了prod解决方案,也尝试了空的解决方案
完整错误消息:

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文件与具有非工作事件的开发人员提供的文件进行比较。它们有相同的内容

我面前没有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
命令不会重置错误级别。(就我所知,这两种情况都不会影响它)。可能还有其他方法,但是
DIR.>nul在将
ERRORLEVEL
重置为零(应该总是可以在当前目录上运行
DIR
)方面似乎对我有效。重定向应停止生成日志中出现的输出

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


添加
DIR.>脚本顶部的nul应确保重置退出代码(并允许稍后检测脚本中的实际故障)。

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


更改用户名在我们所有的案例中都解决了这个问题-\u-

我偶尔会遇到这个问题,但仍然不知道是什么原因造成的!然而,一种有效的“修复”方法(至少在大多数情况下)是简单地在“后期构建”(或其他)命令列表中添加第二行,类似于“rem foo”(似乎是rem完成了这个技巧,后面的内容是不相关的)。嘿,谢谢@AdrianMole,这个技巧对甲烷不起作用,我试过
remfoodir.>nul echo Hello rem foo
。是构建结果的秘密依据。谢谢你的建议:)也许你对这个问题感兴趣: