MSBuild 日志的默认位置是啥?

Posted

技术标签:

【中文标题】MSBuild 日志的默认位置是啥?【英文标题】:What is the default location for MSBuild logs?MSBuild 日志的默认位置是什么? 【发布时间】:2012-07-16 14:43:43 【问题描述】:

我使用的是 Visual Studio Express 2012。日志文件的位置在哪里?我在存储我的解决方案和项目的文件夹中进行了搜索,但找不到任何 .log 文件。

这是日志记录的配置:

【问题讨论】:

没有默认的 .log 文件。查看“输出”窗口。 @Hans,在我的情况下,输出窗口有消息说“构建日志中提供了更多信息。”所以某处有一个单独的日志。我还没找到呢。 【参考方案1】:

使用构建输出而不是记录到文件。无需复制/粘贴,只需单击输出中的某处并按 CTRL + S 即可保存。 Visual Studio 将提示您输入位置(使用 Visual Studio 2017 测试,但我假设这在早期版本中也适用)。

【讨论】:

这很好。他们也应该把它放在上下文菜单中。 对我没用,因为输出中的日志没有完整的日志输出【参考方案2】:

Visual Studio 的日志文件仅支持 C++ 项目。您只需使用其他人的输出窗口即可。

查看类似的帖子:VS2010: minimal build log in output and detailed log in log file

如果您碰巧为 C++ 项目执行此操作,the file is at:

...在中间文件目录中构建日志 ...构建日志的路径和名称由 MSBuild 宏表示 表达式,$(IntDir)\$(MSBuildProjectName).log

【讨论】:

我认为 Visual Studio 没有在文件中详细记录是很愚蠢的。哦,好吧,我不得不接受一个现实。感谢您的回答,@Dmitry @hanxue - 它确实有一个日志。该日志只是没有发送到文件。如果需要日志文件,请从命令行运行 msbuild。 那为什么不这么说:-( 上帝。该死的。为什么这不仅仅是解决方案的一个属性?为什么输出窗口的性能如此糟糕,所以你不得不一直保持最小输出,为什么从一个输出级别更改为另一个输出级别需要 8 个步骤?请修复其中任何一个。 @James 我想您可以编写一个宏并将其分配给工具栏按钮。这些链接可能是起点***.com/questions/12062515/… 和vlasovstudio.com/visual-commander【参考方案3】:

虽然 VS 确实不允许直接这样做,但仍然可以使用“内部”VS2015 的 MSBuild 构建并获取构建窗口输出和日志文件,如下所示:(可以说这有点破解。)

    在您的 VS 托管解决方案中,添加一个新项目(我们称之为“制作”)。 一种。您想要的项目类型是 Visual C++/NMake 项目。 在命令行中定义您需要的 MSBuild 命令(见下文)。 更改解决方案配置以构建 NMake 项目,而不是正常的托管项目。

这将创建一个具有 Build、Rebuild 和 Clean 命令行的项目,您可以在其中直接执行 MSBuild。例如:

重建:MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Clean,Build

构建:MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Build

清理:MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Clean

您还可以指定多个 MSBuild.EXE 命令行来构建多个项目。对于通常构建整个解决方案的结果,您可以仅针对最终的最终组件并让依赖关系图生成各个目标。

这将生成一个 .log 文件,其中 NAME 是您使用的 NMake 项目的名称。在上面的示例中,日志将是 make.log。

GitHub 上提供了一个工作示例: https://github.com/bitblitz/VS_MsbuildExample (用VS2015测试)

请注意,直接构建单个项目仍将使用正常的 VS 行为进行构建,但您可以在 VS 中构建完整的解决方案并获取构建日志。

【讨论】:

VS_MsbuildExample 的链接已损坏。 嘿@brad 你在 GitHub 上的示例发生了什么? 修复了github,麻烦了。 @YannDuran【参考方案4】:

msdn 文档对此非常清楚(而且你不会喜欢它!):

https://msdn.microsoft.com/en-us/library/jj651643.aspx

上面写着:

为托管代码项目创建构建日志文件 在菜单栏上, 选择构建,构建解决方案。

在“输出”窗口中,突出显示 来自构建的信息,然后将其复制到剪贴板。

打开一个 文本编辑器,例如记事本,将信息粘贴到文件中,然后 然后保存。

【讨论】:

这一切都很好,直到您使用诊断输出并且当您尝试复制到剪贴板时 VS 决定抛出“内存不足”异常。不支持将构建日志发送到 IDE 中的文件确实是一个根本愚蠢的决定。但是,嘿嗬,这就是生活。 管道构建到一个文本文件? msbuild mysln.sln >output.txt(可能需要向其中添加参数以使您的 sln 编译,但您应该能够以正确的详细级别从 vs 输出窗口 iirc 中获取它) 通常当我在命令行上构建时,我让构建系统向终端窗口输出最少的信息,但将详细的日志输出到文件中。 MSBuild 可以做到这一点。 “你不会喜欢的!” 6个字就能说明一切,谢谢

以上是关于MSBuild 日志的默认位置是啥?的主要内容,如果未能解决你的问题,请参考以下文章

MSBuild 忽略发布配置文件配置

这个字符串中的非法字符是啥?我收到 MSBUILD :错误 MSB3095

msbuild 自定义日志输出

TeamCity 说在 MSBuild 步骤中使用“构建参数”而不是“/property:”。那是啥意思?

2017年TFS - VS 2017 15.5更新后默认为MSBuild 14。需要MSBuild 15回来

MSBuild + Visual Studio:为解决方案中的所有项目自定义默认“复制本地”