使用MSBuild构建Visual Studio解决方案时配置类VS日志格式(含项目索引)及失败项目列表展示的方法
MSBuild命令行日志格式化与失败项目列表输出
一、让MSBuild日志输出和Visual Studio构建时一致(带项目索引前缀)
Visual Studio构建时的日志会带项目编号前缀,本质是它调用MSBuild时启用了特定的控制台日志选项。你只需要在自己的MSBuild命令里加两个关键参数就能复刻这个效果:
- 加上
/consoleloggerparameters:PrefixOutputWithProjectNumber:这个参数会强制每条日志行前带上对应项目的索引编号,和VS里的1>xxx、6>xxx格式完全一致。 - 调整日志详细度:你的原命令用了
/verbosity:Minimal,这种低详细度会隐藏很多编译细节(比如单个源文件的编译日志)。如果想要和VS的输出完整度匹配,建议把详细度改成/verbosity:Normal——这也是VS默认使用的日志详细度。
修改后的核心命令片段示例:
MSBuild.exe "DeviceLock_vs2019.sln" /p:PreferredToolArchitecture=x64 /p:Configuration="Debug" /p:Platform="Win32" /t:build /maxcpucount:6 /verbosity:Normal /consoleloggerparameters:PrefixOutputWithProjectNumber /ds
(其他日志记录器的参数可以保留,不影响这个功能)
这样输出的日志就会和VS构建时一模一样,能清晰看到每个源文件属于哪个项目。
二、构建结束后打印失败项目列表
要在构建完成后明确看到失败项目的列表,有两种实用方式:
利用已有的
/ds参数:你原命令里的/ds其实就是/showSummary的缩写,它会在构建结束时输出一个汇总面板,里面明确列出失败项目的数量和具体名称。只要你的日志详细度不低于Minimal(你的命令已经满足),这个汇总就会正常显示。给错误日志器添加摘要:如果需要把失败项目列表单独写入错误日志文件,可以修改
filelogger2的参数,加上Summary选项,示例:
/filelogger2 /fileloggerparameters2:ErrorsOnly;Append;LogFile="C:/Users/sergey.kolesnik/dev/repos/DLP/main/src/all_Debug_Win32.err";Encoding=ASCII;Summary
这样在错误日志文件的末尾,会专门添加一段失败项目的汇总列表,方便后续排查。
另外,只要日志详细度足够,MSBuild默认也会在控制台末尾直接输出失败项目的名称和对应的错误数,不用额外参数也能快速看到结果。
内容的提问来源于stack exchange,提问作者Sergey Kolesnik




