我只有一个echo Hello
生成后事件的解决方案,但总是失败,并显示消息The command "echo Hello!" exited with code 1.
有人知道会出什么问题吗?
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 文件与具有非工作事件的开发人员进行比较。它们具有相同的内容。
答案 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)
所以问题是用户名。我们公司有一些自由职业者,他们的用户名以一些特殊字符开头。我不记得是哪一个,但我想下划线。因此,当管理员按用户名对用户进行排序时,他们会排在最前面。
更改用户名解决了我们所有情况下的问题-_-