当 Visual C++ 从 Visual Studio 构建 (vcxproj) 文件或您通过 devenv (building sln) 构建它时,您会在 BuildLog.Path 项指定的文件中从 vcxproj 的构建中获取日志。此项的默认值为 $(IntDir)\$(MSBuildProjectName).log
实际上,我发现此功能对于每个项目的后期构建分析非常有用。
我想通过仅从 msbuild.exe 构建来模拟这种行为。
我现在不能使用 devenv 有严重的构建自动化原因(据我所知,我无法在没有 sln 的情况下通过 devenv 构建 vcxproj)。
我试图通过以下方式解决此问题:
- 创建自定义目标,确定 BuildLog.Path 的值并将其返回
- 然后使用 msbuild 命令行执行任务 Exec,包括使用 filelogger 创建日志文件的参数
问题是它不起作用!
有一个有趣的事情是默认由以下方式指定:
<ItemDefinitionGroup>
<BuildLog>
<Path>$(IntDir)\$(MSBuildProjectName).log</Path>
</BuildLog>
</ItemDefinitionGroup>
如果我理解正确,这将为每个 BuildLog 项指定元数据路径。
默认情况下没有 BuildLog 项(因为在 vcxproj –for BuildLog 项中没有 Include)。
有没有人有这个问题的解决方案或可以解释如何解决它?
- 确定 BuildLog.Path 元数据或
- 仅通过 msbuild 构建 vcxproj 文件,并将日志文件记录到 vcxproj 中指定的日志文件或从 props 文件继承