每次运行Visual Studio时如何修复“项目过期”的消息?

9
我有一个包含70个项目的Visual Studio(2005)解决方案文件。
每次按F5运行它时,它都会告诉我有4个项目已经过期,并询问我是否要重新构建它们。即使我刚刚进行了完整的构建,它仍然会这样做。
我理解(原则上)其中一个其他项目必须更新这些项目所依赖的内容,但是我应该如何找出原因呢?
有没有工具可以帮助,或者我应该遵循哪些程序来找出是什么导致VS标记这些项目需要重新构建?
更新:
对于那些感兴趣的人,看起来我的PC是/是问题(我的硬盘最近一直在表现不佳)。当我试图追踪问题时,连续的重建开始生成编译错误。我进行了清理和构建,并获得了大量(显然是虚假的)错误。重新启动后,再进行一次重建,所有错误和依赖关系问题都消失了。
请原谅我现在去备份所有重要文件...

1
一个很好的调试这个问题的方法在这里详细介绍:https://dev59.com/SHE85IYBdhLWcg3wejVO - Ben
5个回答

7
我会连续运行一次普通的构建。第二次,我会将MSBUILD的详细程度设置为“Normal”或更高级别(在“工具”->“选项”,“项目和解决方案”,“构建和运行”中)。我会仔细阅读输出,看看第二次实际构建了什么。
事实上,现在我想起来了,如果这确实是一个循环,那么第二次构建中构建的某些部分必须是导致它第三次构建等的原因。也许你在其中一个项目中有一个后构建步骤,触及到用作早期步骤输入的程序集或其他资源。在解决方案中有70个项目,这样的事情很容易无意中发生,而且难以发现。您可能需要学习足够的MSBUILD知识,以便能够检测到其步骤何时决定需要构建,因为某些内容已更改,然后了解您的解决方案,以知道不应该有任何更改,然后看到某些内容已经更改,但不应更改。
完成此练习后,您可能已经获得了一些见解,从而使您能够帮助将解决方案拆分成较小的解决方案。

1

在我的项目中,我删除了一些不再使用的源文件,在VS2010中遇到了完全相同的问题。只需从“生成”菜单中选择“清理解决方案”,然后重新构建解决方案即可为我解决问题。


1
打开 Visual Studio 2013 的解决方案资源管理器,比 John 在日志中的冗长记录更快的方法是查看项目树;未找到的文件名前没有小三角(通常可以在其中查看该文件中的符号列表)。

删除这些文件后,"AlwaysCreate" 消息消失了(只有在详细级别至少设置为 "Normal" 时才会看到 "AlwaysCreate")。


1
我曾经遇到过将一个使用自定义构建步骤编译的 .netmodule 链接到我的项目中的同样问题。问题最终被发现是因为我同时链接了一个 C++ lib,而在链接器输入中 .netmodule 文件也被列在了同一行。
例如:.lib .netmodule 应该改为: .lib \n .netmodule

1

我遇到了这个问题,后来发现我的项目中添加了一个头文件,但是我已经从磁盘上将其删除。从中删除不存在的头文件可以解决此问题。


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