如何为在 .props 文件中声明的非本机 VC 编译器 (GCC) 实现 MSBUILD 文件跟踪功能 (跟踪器.ex

How to implement MSBUILD file tracking feature (Tracker.exe) for a not native VC compiler (GCC) declared in .props files?

本文关键字:跟踪 文件 GCC ex 实现 MSBUILD 编译器 功能 本机 props 声明      更新时间:2023-10-16

在互联网上搜索了几个小时后,我找不到任何有关此的信息或文档。有谁知道是否有办法完成这项工作?

如果能得到正确方向的提示,那就太好了。

提前感谢,

亚历克斯

您必须编写将使用文件跟踪进行增量构建的任务。.NET API似乎在这里:FileTracker类

如果我是你,我会尝试反汇编Microsoft.Build.CPPTasks.Common.dll汇编 - 类Microsoft.Build.CPPTasks.TrackedVCToolTask以了解它是如何工作的。

因此,这是我的即兴想法,它是如何工作的:

  1. 我认为 Tracer.exe 启动子进程(您的工具作为暂停的进程)。
  2. 然后它修补 kernel32.dll文件 winapi 以跟踪所有读写操作(所以我认为他们修补了 CreateFile 和 CloseHandle)。
  3. 然后恢复进程
  4. 进程
  5. 完成后,您应该获得子进程使用的文件列表。
  6. 用于将输出文件生成到日志文件中的输入文件的文件列表写入日志文件。
  7. 第二次调用任务时,您可以在构建中进行优化。因为您现在有文件映射,所以您应该能够决定是调用工具进行给定输出还是跳过它。如果输出文件时间戳比所有输入文件更新,并且编译设置都没有更改(项目文件时间戳 - 或更复杂的东西),您可以跳过它。

文件跟踪