MSBuild日志的默认位置是什么?


101

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

这是用于日志记录的配置:

在此处输入图片说明


1
没有默认的.log文件。在“输出”窗口中查找。
汉斯·帕桑

13
@Hans,在我的情况下,输出窗口中有消息说“构建日志中有更多信息”。因此某处有一个单独的日志。我还没有找到。
Brandon Kuczenski 2015年

Answers:


106

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

看到这个类似的线程:VS2010:最小构建日志输出和详细日志日志文件

如果您碰巧对C ++项目执行此操作,则文件位于

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


14
我认为在文件中没有详细的日志记录只是Visual Studio的愚蠢做法。哦,我必须接受一个现实。谢谢您的回答,@Dmitry
寒雪

8
@hanxue-它确实有一个日志。该日志只是不发送到文件。如果需要日志文件,请从命令行运行msbuild。
里奇·梅尔顿

43
那为什么不这样说:-(
Simon_Weaver

2
神。该死的。为什么这不只是解决方案的一个属性?为什么输出窗口仍然如此糟糕,所以您不得不一直将其保持在最小输出水平,为什么要从一个输出级别切换到另一个输出级别像8步?请修复其中任何一个。
詹姆斯,

@James我想您可以编写一个宏并将其分配给工具栏按钮。这些链接可能是一个起点stackoverflow.com/questions/12062515/…vlasovstudio.com/visual-commander
Dmitry Pavlov

23

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

https://msdn.microsoft.com/zh-CN/library/jj651643.aspx

它说:

为托管代码项目创建生成日志文件的步骤在菜单栏上,依次选择“生成”,“生成解决方案”。

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

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


15
直到您使用诊断输出并且VS决定在尝试复制到剪贴板时抛出“内存不足”异常,这一切都很好。从根本上来说,确实是一个愚蠢的决定,不支持将构建日志发送到IDE中的文件。但是,嘿,生活就是这样。
Steve Pettifer

1
用管道将其生成文本文件?msbuild mysln.sln> output.txt(可能需要在其中添加参数才能编译sln,但是您应该能够以正确的详细程度从vs输出窗口iirc捕获该信息)
Daniel M

通常,当我在命令行上进行构建时,我会使构建系统向终端窗口输出最少的信息,但向文件输出详细的日志。MSBuild可以做到这一点。
C约翰逊

“而且你不会喜欢它的!” 这用6个词
就能

23

使用构建输出而不是记录到文件。只需复制输出中的某个位置,然后按CTRL + S即可保存而不是复制/粘贴。Visual Studio会提示您输入位置(已在Visual Studio 2017中测试过,但我认为这也适用于早期版本)。

在此处输入图片说明


很好 他们也应该将其放在上下文菜单中。
光泽

2

尽管VS确实不允许直接这样做,但仍然可以使用MSBuild“内部” VS2015进行构建,并同时获得构建窗口输出和日志文件,如下所示:(可以说这有点hack。)

  1. 在您的VS托管解决方案中,添加一个新项目(我们称其为“ Make”)。一个。您想要的项目类型是Visual C ++ / NMake项目。
  2. 在命令行上定义所需的MSBuild命令(请参见下文)。
  3. 更改解决方案配置以构建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内部构建完整的解决方案并获取构建日志。


1
到VS_MsbuildExample的链接已断开。
JPaget '19

嘿@brad,您在GitHub上的示例发生了什么?
Yann Duran

修复了github,很抱歉给您带来麻烦。@YannDuran
Brad
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.