Visual studio 2012 %ERRORLEVEL%在通过visual studio命令提示符生成解决方案时失败
我正试图通过VisualStudio命令提示符构建一个解决方案。我用的是VS2012。我已经编写了一个脚本,并通过VS命令提示符使用它。脚本内容为:Visual studio 2012 %ERRORLEVEL%在通过visual studio命令提示符生成解决方案时失败,visual-studio-2012,msbuild,Visual Studio 2012,Msbuild,我正试图通过VisualStudio命令提示符构建一个解决方案。我用的是VS2012。我已经编写了一个脚本,并通过VS命令提示符使用它。脚本内容为: set BUILD_STATUS=%ERRORLEVEL% msbuild C:\MyProj.vcxproj /p:Configuration=Debug /p:platform=x64 /verbosity:minimal @if %BUILD_STATUS%==1 goto fail :fail exit /B 1 如果解决方案已编
set BUILD_STATUS=%ERRORLEVEL%
msbuild C:\MyProj.vcxproj /p:Configuration=Debug /p:platform=x64 /verbosity:minimal
@if %BUILD_STATUS%==1 goto fail
:fail
exit /B 1
如果解决方案已编译且是最新的,则返回错误并终止执行。执行直接移动到:fail块,而不执行更多行。只有当解决方案是最新的,但过时的解决方案工作正常时,才会发生这种情况
我也尝试过否定:
@if not %BUILD_STATUS%==0 goto fail
请提供帮助。ERRORLEVEL不是环境变量,因为您正在尝试捕获它。将批处理重写为:
msbuild C:\MyProj.vcxproj /p:Configuration=Debug /p:platform=x64 /verbosity:minimal
@if ERRORLEVEL 1 goto fail
rem If no error, success
goto success
:fail
exit /B 1
:success
exit /B 0
似乎您是在构建之前而不是之后捕获ERRORLEVEL,您确定这是您想要的吗?同样,不管构建状态是什么,它总是会达到:fail,因为您只使用
if
,而不使用else
?无论如何,为什么要使用这样的脚本而不是直接调用msbuild?@Milind,修复批处理文件,它的编写方式毫无意义。在那之后,试着重现你的问题。对我来说,msbuild在成功时总是返回0
,在出现生成错误时总是返回1
。