Visual Studio 2010始终认为项目已过期,但实际上没有任何更改。

197

我有一个非常类似于这里描述的问题。

我也将一个包含C++/CLI和C#工程的混合解决方案从Visual Studio 2008升级到了Visual Studio 2010。在Visual Studio 2010中,一个C++/CLI工程总是过期。

即使它已经在编译和链接之前完成,按下F5,消息框"该项目已过期。您想要构建它吗?"会出现。这非常烦人,因为DLL文件是低级别的,强制几乎所有的解决方案重新构建。

我的pdb设置被设置为默认值(此问题的建议解决方案)。

是否有可能找到Visual Studio 2010强制重建或认为某个工程是最新的原因?

其他任何关于Visual Studio 2010出现这种情况的想法?


请参考以下链接:https://dev59.com/O43da4cB1Zd3GeqPxEDH - newdazhu
请参考以下链接:https://dev59.com/O43da4cB1Zd3GeqPxEDH - newdazhu
30个回答

1

这种情况在我身上发生了多次,然后就消失了,我还没来得及找出原因。在我的情况下是:

双系统设置中的错误系统时间!

结果发现,我的Ubuntu双启动引起了问题!!我太懒了,没有修复Ubuntu以停止干扰我的硬件时钟。当我登录Ubuntu时,时间会向前跳5个小时。

不幸的是,我使用错误的系统时间构建了一次项目,然后更正了时间。结果,所有的构建文件都有错误的时间戳,VS会认为它们都已过期并重新构建项目。


1
对我来说,问题出现在一个WPF项目中,其中一些文件的“生成操作”属性设置为“资源”,并且它们的“复制到输出目录”设置为“如果较新则复制”。解决方案似乎是将“复制到输出目录”属性更改为“不复制”。
msbuild知道不要将“资源”文件复制到输出目录 - 但仍会触发构建,如果它们不存在。也许这可以被认为是一个错误?
这里的答案提示如何让msbuild透露它为什么一直在构建所有内容,这非常有帮助!

1

我曾经遇到过这个问题,后来找到了解决方法:

http://curlybrace.blogspot.com/2005/11/visual-c-project-continually-out-of.html

Visual C++ Project continually out-of-date (winwlm.h macwin32.h rpcerr.h macname1.h missing)

Problem:

In Visual C++ .Net 2003, one of my projects always claimed to be out of date, even though nothing had changed and no errors had been reported in the last build.

Opening the BuildLog.htm file for the corresponding project showed a list of PRJ0041 errors for these files, none of which appear on my system anywhere: winwlm.h macwin32.h rpcerr.h macname1.h

Each error looks something like this:

  MyApplication : warning PRJ0041 : Cannot find missing dependency 'macwin32.h' for file 'MyApplication.rc'.  

Your project may still build, but may continue to appear out of date until this file is found.

Solution:

Include afxres.h instead of resource.h inside the project's .rc file.

The project's .rc file contained "#include resource.h". Since the resource compiler does not honor preprocessor #ifdef blocks, it will tear through and try to find include files it should be ignoring. Windows.h contains many such blocks. Including afxres.h instead fixed the PRJ0041 warnings and eliminated the "Project is out-of-date" error dialog.


0

我认为您添加了一些换行符或其他空格。请将其删除,然后再次按F5。


0

关于Visual Studio 2015 SP3的又一个问题,但我几年前在Visual Studio 2013上遇到了类似的问题。

我的问题是某个错误的cpp文件被用于预编译标头(所以我有两个cpp文件创建了预编译标头)。现在为什么Visual Studio会更改错误cpp的标志以“创建预编译标头”而没有我的请求,我不知道原因,但它确实发生了...也许是某个插件之类的东西???

无论如何,错误的cpp文件包括version.h文件,该文件在每次构建时都会更改。因此,Visual Studio重新构建所有标头,并因此重建整个项目。

好吧,现在回到正常状态了。


0
我有一个VC++项目,它总是编译所有文件,并且之前已经被其他人从VS2005升级到了VS2010。我发现该项目中除了StdAfx.cpp之外的所有cpp文件都设置为创建(/Yc)预编译头文件。我将其更改为只有StdAfx.cpp设置为创建预编译头文件,其余的设置为使用(/Yu)预编译头文件,这样问题就得到了解决。

0

我使用 Visual Studio 2013,并刚刚更新到 Windows 10 May 2019 更新。然后编译突然需要每次重新进行,而不管是否有更改。我尝试将 pch 重命名为 ProjectName 而不是 TargetName,使用详细日志和 Python 脚本寻找缺失的文件,但最终发现我的时间与微软的服务器未同步(就差毫秒)。

对我有帮助的解决方法是:

  • 在控制面板中选择“调整日期和时间”
  • 点击“立即同步”

现在我的项目不再无故需要重新编译了。


0
如果更改项目的调试命令参数,这也会触发需要重新构建项目的消息。即使目标本身不受调试参数的影响,但项目属性已经更改。如果您进行重新构建,消息应该会消失。

0

我曾经在使用Visual Studio 2005时遇到过类似的问题,我的解决方案包括以下五个项目的依赖关系(从上往下构建):

Video_Codec depends on nothing
Generic_Graphics depends on Video_Codec
SpecificAPI_Graphics depends on Generic_Graphics
Engine depends on Specific_Graphics
Application depends on Engine.

我发现在进行完整的清理和重建解决方案之后,Video_Codec项目仍需要进行完整的构建。

我通过确保C/C++和链接器的输出文件与其他正常工作的项目使用的位置匹配来解决了这个问题。我还打开了RTTI。


-3

.NET 项目始终会重新编译。其中一部分原因是为了保持 IDE 的最新状态(例如 IntelliSense)。我记得几年前在 Microsoft 论坛上问过这个问题,这就是我得到的答案。


1
在VS2008中,项目不会每次都重新构建。这非常令人恼火,因为该dll是非常低级别的,几乎强制所有我的dll重新构建。迁移过程中出了些问题,我无法找出原因。 - Chris U
2
2008年、2010年、2012年和2013年不会每次重新构建.NET项目。 - paulm
有后台编译正在进行中(请记住,这个答案已经是10年前的了),以保持Intellisense的功能。 - Preet Sangha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接