什么是“tlog”文件?
“tlog”文件是由“Tracker.exe”进程创建的,该进程在构建过程中运行,并记录有关构建的一些信息。
这些信息会在下次启动构建时使用和更新,以帮助检测“过时”的文件,从而使构建系统只构建需要重新构建的部分(而不是全部重新构建)。
什么会导致“过时”问题出现?
问题可能是由于*.tlog
文件中的不正确或陈旧信息引起的。
这可能会发生以下3种方式之一:
1)您在硬盘上构建了项目,然后将目录移动到另一个位置......“tlog”文件记录了旧位置的路径,但由于您移动了文件,它们不再存在,因此您会得到“过时”。
2)您的“项目”引用了不存在的文件(通常是头文件),这可能是因为您从源代码控制系统中删除了文件,但忘记从项目中删除,或者因为您引用的库的头文件可能被“安装”/存在于不同的位置。开发人员通常假设文件在每个人的机器上都位于同一个“位置”......但并不总是如此!
3)您对项目进行了一些“重构”,将文件移动到不同的子目录中,甚至重命名它们-因此在“tlog”中记录的文件路径/名称与在磁盘上存在的内容不匹配,即为陈旧。
如何解决这个问题?
进行“清除+构建”或“重新构建”并不总是能解决问题......因为这些操作不会删除“tlog”文件。所以:
如何确定哪些文件不存在?
如果您想知道/找出Visual Studio认为哪些文件已过时,那么可以在Visual Studio中打开一些诊断信息...并观察DebugView中显示的正在探测的文件的完整路径。
在devenv.exe.config
文件中添加以下内容:
<system.diagnostics>
<switches>
<add name="CPS" value="4" />
</switches>
</system.diagnostics>
更多详情
假设您在特定目录(例如S:\ MYPROJECTS)中创建了一个解决方案和一组项目,并对其进行编译、运行/调试等操作。
然后,您决定将整个目录移动到驱动器上的其他地方,或重新编排您的项目,例如更改它们的目录名称等。
现在,当您执行“开始调试/F5”时,Visual Studio会进行相关检查,并认为您有“过时的文件”。
即使您执行“清理解决方案”或“重建解决方案”….您仍然会收到“过时的文件”消息。
请参见此处:
问题是由“tlog”文件引起的,这些文件在依赖性检查期间被查询……当您移动解决方案/项目(连同构建中间文件)时,它们会让Visual Studio构建器感到混乱。
解决方案是删除所有“.tlog”文件…..下次执行构建时,它们将被重新生成…..从那时起,您将不会收到虚假的“过时的文件”消息……除非它们真的已过期。