使用 MSBuild 获取生成日志

通过将命令行选项与 MSBuild 结合使用,可以指定要查看的生成数据量以及是否要将生成数据保存到一个或多个文件。 还可以指定用于收集生成数据的自定义记录器。 有关本主题未涵盖的 MSBuild 命令行选项的信息,请参阅 命令行参考

注释

如果使用 Visual Studio IDE 生成项目,可以通过查看生成日志来排查这些生成问题。 有关详细信息,请参阅如何:查看、保存和配置生成日志文件

设置详细信息级别

使用 MSBuild 生成项目而不指定详细信息级别时,输出日志中会显示以下信息:

  • 分类为高度重要的错误、警告和消息。

  • 某些状态事件。

  • 构建摘要。

通过使用 -verbosity-v) 开关,可以控制输出日志中显示的数据量。 若要进行故障排除,请使用详细级别 detailed (d) 或 diagnostic (diag),以提供最多的信息。

当您将-verbosity设置为detailed时,生成过程可能会变慢;当您将-verbosity设置为diagnostic时,生成过程可能会更慢。

msbuild MyProject.proj -t:go -v:diag

详细设置

下表显示了日志详细程度(列值)如何影响记录的消息类型(行值)。

消息类型/详细程度 安静 最少 正常 详细 诊断
错误
警告
高重要性消息
普通重要性消息
低重要性消息
其他 MSBuild 引擎信息

将生成日志保存到文件

可以使用 -fileLogger-fl) 开关将生成数据保存到文件中。 以下示例将生成数据保存到名为 msbuild.log的文件。

msbuild MyProject.proj -t:go -fileLogger

在以下示例中,日志文件命名 为MyProjectOutput.log,日志输出的详细程度设置为 diagnostic。 使用 -fileLoggerParameters-flp) 开关指定这两个设置。

msbuild MyProject.proj -t:go -fl -flp:logfile=MyProjectOutput.log;verbosity=diagnostic

有关详细信息,请参阅 命令行参考

将日志输出保存到多个文件

以下示例将整个日志保存到 msbuild1.log,仅将错误保存到 JustErrors.log,仅将警告保存到 JustWarnings.log。 该示例对三个文件中的每个文件使用文件编号。 文件编号在-fl-flp开关后面指定(例如-fl1-flp1)。

文件 2 和 3 的 -fileLoggerParameters (-flp) 开关指定了每个文件的命名以及每个文件中包含的内容。 没有为文件 1 指定名称,因此使用 默认名称msbuild1.log

msbuild MyProject.proj -t:go -fl1 -fl2 -fl3 -flp2:logfile=JustErrors.log;errorsonly -flp3:logfile=JustWarnings.log;warningsonly

如果使用解释分号(例如 bash)的 shell,请在具有分号的任何选项周围放置单引号或双引号,以防止将其解释为命令分隔符。 有关详细信息,请参阅 命令行参考

保存二进制日志

可以使用-binaryLogger-bl)开关以压缩的二进制格式保存日志。 此日志包含生成过程的详细说明,并且可由某些日志分析工具读取。

在以下示例中,使用名称 binarylogfilename 创建二进制日志文件。

-bl:binarylogfilename.binlog

可以使用 结构化日志查看器 查看二进制日志,以便更轻松地查看发生了什么。

有关详细信息,请参阅 命令行参考

使用自定义记录器

可以通过编写一个实现 ILogger 接口的托管类型来创建自己的记录器。 例如,可以使用自定义记录器在电子邮件中发送生成错误、将其记录到数据库或将其记录到 XML 文件。 有关详细信息,请参阅 生成记录器

在 MSBuild 命令行中,使用 -logger 开关指定自定义记录器。 还可以使用 -noconsolelogger 开关禁用默认控制台记录器。