为什么我的项目在没有修改的情况下也会构建?

6
我有许多C#(Visual Studio 2008)项目,其中一些即使我选择构建而不是重建,也会更新程序集。大多数项目都不会这样做,只有少数几个。
我尚未发现任何项目之间的差异,并想知道是否有人知道可能影响此问题的因素。需要明确的是,在构建前我没有进行任何代码更改,但在运行Visual Studio中的构建命令时,程序集仍然被重新创建。
很抱歉我无法提供更多详细信息,但请告诉我是否还有其他可以检查以解决问题的方法。
有人能帮忙吗?我已经为此苦恼了一段时间。
谢谢, Alan
3个回答

13

实际上,汉斯已删除的回答指引了我正确的方向。将MSBuild的详细程度提高到诊断级别后,告诉我VS认为一个项目总是过期,因为一个文件的"复制到输出目录"设置为"始终复制"。其他项目也遵循这个规则,因为它们依赖于该项目并注意到新构建的DLL比它们自己的输出文件中的某个更新。

将“复制到输出目录”更改为“仅在较新时复制”解决了这个问题。


这正是我在解决方案中遇到的确切问题 - 一个项目拥有一个被设置为“始终复制”的配置文件,这导致每次都会触发所有依赖项目重新构建! - benjymous

4

有一种叫做项目依赖的东西。

当你的一个项目依赖于一个或多个其他项目,并且你构建它时,它所依赖的其他项目(如果需要)也将开始构建。此外,如果依赖关系发生了变化,则依赖它们的项目将始终被重新构建。

您可以右键单击解决方案,选择“项目构建顺序”来打开一个窗口,该窗口说明了项目构建的顺序以及每个项目的依赖关系。


1
即使它们自上次构建以来没有更改? - Armen Tsirunyan
是的!您可以在配置管理器中更改是否构建它们。 - user415789

1

我没有深究这个问题,最后重建了其中一个项目。结果发现所有的问题都源于那个一直在重建的项目。

我想这可能与嵌入的资源每次都要重新构建有关。

很抱歉我对此没有明确的答案。也感谢RobV提供的有用信息。

Alan


我总是接受指导我的答案,即使它不是100%准确的答案。然后,我会编辑我的问题,包括我自己发现的信息(在回答的帮助下)。 - jgauffin
好的,我会在未来考虑这个问题。我刚刚注意到我把这个问题搁置了,想在忘记之前解决它... - Alan Spark

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