cmd msbuild 错误级别始终为 0

标签 cmd msbuild errorlevel

我的 build.bat 文件中有这段代码

for /R %~dp0 %%A In (*.sln) do (
c:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe %%A /t:rebuild /nologo /verbosity:minimal /flp:Verbosity=detailed;LogFile=%~dp0\Logs.txt;append=true /m /p:Configuration=Debug;Platform="Any CPU" /p:VisualStudioVersion="12.0"
if not %errorlevel%==0 set Failed+=1
pause)

我的问题是 %errorlevel% 始终为 0,即使日志文件有错误和警告。

最佳答案

JozefZ 的评论帮助了我:

使用 SETLOCAL EnableDelayedExpansion 和 !errorlevel!而不是 %errorlevel% 或(更好)返回 If ErrorLevel 1 语法。设置 EnabledDelayedExpansion 将导致每个变量在执行时而不是在解析时展开:解析时,命令解释器逐行计算变量和/或 command_by_command,但 () 括号中的所有代码块都认为是一个命令。另一方面,如果 ErrorLevel 1 应该被读取为好像 ErrorLevel 大于或等于 1 因此不等于 0

关于cmd msbuild 错误级别始终为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27382735/

相关文章:

c# - 在 C# 中处理详细控制台输出的正确方法

c# - 将 pdb 文件包含到我的 nuget (nupkg) 文件中

java - 适用于 C# 和 Java 的 SonarQube 多语言项目

c - 从系统命令获取错误级别

node.js - 使用 Node js 从打印机扫描

windows - 如何在 Windows 后台运行命令?

parameters - 有没有办法指示批处理文件中的最后 n 个参数?

c# - 如何在资源/常量/字符串/其他中嵌入 AssemblyFileVersion?

pipe - 如何在管道命令行中使用第一个程序的返回码