Ami*_*nen 15 msbuild visual-studio-2010 incremental-build
在Visual Studio 2010中,使用文件跟踪器(Microsoft.Build.Utilities.FileTracker)完成增量构建.它似乎负责在中间目录上创建这些*.1.tlog文件.
我找不到这些.tlog文件的语法参考.
它们包含在跟踪器跟踪某些工具的执行时读取/写入的文件的路径列表,以便检查应在增量构建中编译哪些文件.但是,这些文件还包含一些特殊字符,如"^"和"|".
我注意到的另一件事是这些文件有时是从Visual Studio目标文件编辑的.例如,在CustomBuildStep目标上的Microsoft.CppCommon.targets中,我找到以下行:
<!-- Appended tlog to track custom build events -->
<WriteLinesToFile File="$(IntDir)$(ProjectName).write.1.tlog" Lines="@(CustomBuildStep->'^%(Identity)');@(CustomBuildStep->MetaData('Outputs')->FullPath()->Distinct())"/>
Run Code Online (Sandbox Code Playgroud)
所以这可能意味着项目文件依赖于自定义构建步骤输出.
我的问题是:
谢谢
CanonicalTrackedInputFiles Class将文档称为" .read的文件跟踪日志解释器.以规范形式跟踪日志或已经生根(^)以使它们成为规范 "
当我有时间时我会深入研究它.也许这个类和Microsoft.Build.Utilities下的其他类可以用来帮助我们使用tlog文件,而不是直接使用原始文本tlog文件.
另请参阅:CanonicalTrackedOutputFiles Class,FlatTrackingData Class当然FileTracker Class.
小智 6
这些东西似乎没有记录在任何地方,所以我不得不根据试验和错误并通过盯着一些示例targets/ xml/ props文件来解决这个问题:
自定义构建步骤手动写入tlog文件的原因是Build | Clean - 可能是其命令行对应 - 擦除tlog文件以查找要删除的文件.它似乎寻找匹配的所有文件*.write.tlog,或者可能*.1.write.tlog在中间文件夹中,读取每个文件中的文件名列表,并删除名为的文件.因此,如果自定义构建步骤知道它的输出是什么,它可以简单地将它们记录在tlog文件中,并以这种方式与Build | Clean交互.
(您可以自己尝试一下 - 构建项目,创建一些临时文件,将您自己的tlog文件添加到项目的中间文件夹,其中包含临时文件的路径,然后执行Build | Clean.您的临时文件将随之删除通常的建筑文物.)
在tlog文件中,没有前缀的文件是输出文件的名称.执行"生成"|"清理"时,将删除这些文件.
^我认为一个带有评论之前的文件- 显然,Build | Clean不会触及任何这些.
至于|,我只在注释行中看到它,用于分隔不同的文件名.我怀疑这只是一个约定,而不是一些特殊的语法,因为如果你把多个输出文件放在一行,分开|,Build | Clean不会删除它们.
tlog 文件格式现已记录在此处:https://learn.microsoft.com/en-us/visualstudio/extensibility/visual-cpp-project-extensibility ?view=vs-2017#tlog-files
读取.tlog格式
读取.tlog 文件 ( .read..tlog ) 包含有关源文件及其依赖项的信息。
行开头的插入符号 (^) 表示一个或多个源。共享相同依赖项的源由竖线 (|) 分隔。
依赖文件列在源代码之后,每个文件独占一行。所有文件名都是完整路径。
| 归档时间: |
|
| 查看次数: |
10003 次 |
| 最近记录: |