使用来自Cmd控制台的MSbuild编译.sln文件时,将Build日志创建到Specific项目文件夹中

时间:2014-03-03 17:42:12

标签: build msbuild logfile

我有一个包含.vcxproj文件的解决方案文件。

对于所有.vcxproj项目文件,Build log file属性设置为 $(IntDir)$(MSBuildProjectName).log

当我将解决方案加载到VS2013并从解决方案资源管理器调用Rebuild Solution时,日志文件将在相应的文件夹中生成。它工作正常。

我的问题是我有很多这样的.sln文件。我想为所有.sln文件创建一个带有MsBuild命令的批处理文件并运行。

我用于每个.sln文件的msbuild命令是 C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild.exe / nologo / m / t:Rebuild / p:“Configuration = Release “/ p:”Platform = x86“”xyz.sln“

但是当我从命令控制台运行相同的内容时,根本不会生成构建日志文件。

我在这个MS构建命令中缺少一些特定的swith /选项

1 个答案:

答案 0 :(得分:2)

该构建日志属性与Options->Projects and Solutions->VC++ Project Settings->Build logging一起使用,并且仅在Visual Studio内构建时才有效。内部视觉工作室做类似的事情

msbuild /t:Rebuild [Properties] [FileLogger parameters] xyz.vcxproj

解决方案中的每个(C ++)项目。对于FileLogger参数的所有可能性,在命令行上输入msbuild /? - 当VS调用msbuild时,它们将等同于

/flp:Verbosity=[verbosity set in 'Build and run' in VS];LogFile=[value of BuildLog property]

在使用msbuild从命令行构建解决方案时,确切地复制此行为并不容易,另请参阅this unanswered question这基本上是重复的:您必须解析解决方案并从中获取所有项目,然后解析那些以获取BuildLog属性的值,然后为每个调用msbuild。

您可以做什么:使用VS从命令行构建:

devenv xyz.sln /build

或使用msbuild并在单个日志文件中收集所有输出

msbuild xyz.sln /fl:LogFile=xyz.log