Visual Studio项目已过期

时间:2013-02-19 22:51:02

标签: c++ visual-studio-2010 visual-studio visual-c++

我一直在努力让Visual C ++工作,但是在构建每个项目时我都遇到了这个错误:“这个项目已经过时了”“你想构建它吗?”它每次都无法构建。

当我重建时,构建仍然失败,虽然在记录器中我没有注意到任何错误消息,这使我认为它没有正确记录(我正在使用第三方程序进行记录)。

我已按照此处的一些说明操作:http://blogs.msdn.com/b/vsproject/archive/2009/07/21/enable-c-project-system-logging.aspx并启用了日志记录功能。

我收到此错误:项目不是最新的,因为“在此处插入文件名”。缺少.lastbuildstate 。请注意,在实际的visual studio中,没有任何记录。我无法在谷歌上找到任何相关内容。可能是我错误地启用了日志记录,但我觉得这是错误。

6 个答案:

答案 0 :(得分:26)

什么是“tlog”文件?

“tlog”文件由“Tracker.exe”进程创建,该进程在您进行构建时运行,并记录有关构建的一些信息。

下次启动构建时,将使用和更新该信息,以帮助检测“过时”文件,从而使构建系统仅构建需要重建的位(而不是再次构建所有内容)。

导致“过时”问题的原因是什么?

问题可能是由*.tlog文件中的错误或陈旧信息引起的。

有三种主要方式可以发生:

1)您在硬盘上构建了一个项目,然后将目录移动到另一个位置......“tlog”文件记录了旧位置的路径,但由于您移动了文件,它们不再存在因此你会“过时”。

2)您的“项目”引用了文件(通常是头文件),这些文件在指定的位置不存在。如果您从源代码管理系统中删除了一个文件,但忘记将其从项目中删除,或者因为您引用了可能已“安装”/出现在其他位置的库的头文件,则可能会发生这种情况。通常,开发人员认为文件位于每台机器上的相同“位置”......并非总是如此!

3)您已对项目进行了一些“重构”,并将文件移动到不同的子目录,甚至重命名它们 - 因此“tlog”中记录的文件的路径/名称与您的项目中存在的路径/名称不匹配磁盘即陈旧。

修复它的方法是什么?

执行“Clean + Build”或“Rebuild”并不总是修复它......因为这些操作不会删除“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构建器混淆。 / p>

解决方案是删除所有的.tlog文件......然后在下次构建时重新生成它们......从那时起你就不会得到一个虚假的“日期文件“消息......除非它们真的过时了。

答案 1 :(得分:25)

您应该让Visual Studio告诉您重建的原因。 Visual Studio 2015 已内置对此的支持:

  • 工具(菜单)
  • 选项
  • 项目和解决方案
  • 构建并运行

将MSBuild项目构建输出详细程度更改为详细或诊断。

就我而言,它打印了这样的信息:

    public static DataTable Get_JobTypeList() { 
       return SqlHelper.ExecuteDataset(connection, CommandType.StoredProcedure, "JMPS_GET_Jobs_Type").Tables[0];
 }

...并从项目中删除该标题解决了问题。

要在较旧的Visual Studio版本中获取此信息,您需要使用DebugView并修改1>------ Up-To-Date check: Project: xyz, Configuration: xyz ------ 1>Project not up to date because build input 'C:\ws\Missing.h' is missing. (请参阅Colin Smith的回答:https://stackoverflow.com/a/21759835/1941779)。请注意,此解决方案不适用于Visual Studio 2015。

答案 2 :(得分:5)

我也一直在&#34;该项目已经过时了#34;错误,即使没有变化。我将其跟踪到解决方案资源管理器中列出的头文件,该头文件已不再使用,并已从项目目录中删除。从SE列表中删除它会修复弹出的无关错误消息。

答案 3 :(得分:3)

我也有这个问题。 在我的情况下,原因是文件(通常是头文件)的引用,它们在指定的位置不存在。

答案 4 :(得分:1)

我遇到了这个问题,并且使用colinsmith发布的诊断技巧,能够将问题追溯到我的.vcxproj引用一个实际上并不存在于任何地方的文件这一事实(它曾经很久以前删除了,但从未从项目文件中删除过。)

答案 5 :(得分:0)

为了后代,我遇到了这个问题,然后意识到我的计算机时钟已经过去了大约48小时。我将其设置为当前时间后,警告消失了。