什么是“tlog”文件?
“tlog”文件由在您进行构建时运行的“Tracker.exe”进程创建,并记录有关构建的一些信息。
该信息将在您下次开始构建时使用并更新,以帮助检测“过时”文件,从而使构建系统仅构建需要重建的位(而不是重新构建所有内容)。
是什么导致“过时”问题?
该问题可能是由*.tlog
文件中的不正确或陈旧信息引起的。
可能发生的主要方式有 3 种:
1)您在硬盘上建立了一个项目,然后将目录移动到另一个位置......“tlog”文件记录了旧位置的路径,但是由于您移动了文件,它们不再存在,因此您变得“过时”。
2)您的“项目”引用了指定位置不存在的文件(通常是头文件)。如果您从源代码控制系统中删除了文件,但忘记将其从项目中删除,或者因为您引用了可能“安装”/存在于不同位置的库的头文件,则可能会发生这种情况。通常,开发人员假设文件位于每个人机器上的同一个“位置”......并非总是如此!
3)您已经对项目进行了一些“重构”,并将文件移动到不同的子目录,甚至重命名它们 - 因此“tlog”中记录的文件的路径/名称与磁盘上存在的文件不匹配,即陈旧.
修复它的方法是什么?
执行“Clean+Build”或“Rebuild”并不总能修复它……因为这些操作不会删除“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 文件……它们将在您下次构建时重新生成……从那时起,您将不会得到虚假的“过期文件”消息....除非它们真的过时了。