3

当 Visual C++ 从 Visual Studio 构建 (vcxproj) 文件或您通过 devenv (building sln) 构建它时,您会在 BuildLog.Path 项指定的文件中从 vcxproj 的构建中获取日志。此项的默认值为 $(IntDir)\$(MSBuildProjectName).log

实际上,我发现此功能对于每个项目的后期构建分析非常有用。

我想通过仅从 msbuild.exe 构建来模拟这种行为。

我现在不能使用 devenv 有严重的构建自动化原因(据我所知,我无法在没有 sln 的情况下通过 devenv 构建 vcxproj)。

我试图通过以下方式解决此问题:

  1. 创建自定义目标,确定 BuildLog.Path 的值并将其返回
  2. 然后使用 msbuild 命令行执行任务 Exec,包括使用 filelogger 创建日志文件的参数

问题是它不起作用!

有一个有趣的事情是默认由以下方式指定:

<ItemDefinitionGroup>
   <BuildLog>
      <Path>$(IntDir)\$(MSBuildProjectName).log</Path>
   </BuildLog>
</ItemDefinitionGroup>

如果我理解正确,这将为每个 BuildLog 项指定元数据路径。

默认情况下没有 BuildLog 项(因为在 vcxproj –for BuildLog 项中没有 Include)。

有没有人有这个问题的解决方案或可以解释如何解决它?

  1. 确定 BuildLog.Path 元数据或
  2. 仅通过 msbuild 构建 vcxproj 文件,并将日志文件记录到 vcxproj 中指定的日志文件或从 props 文件继承
4

0 回答 0