Visual Studio一直在构建所有内容

6

我有一个包含多个项目的大型.sln文件。

我刚在A项目中进行了更改,它构建了另外九个A项目引用但没有代码更改的项目。

是否有一种方法可以加速这个过程?


从你的陈述来看,这显然是一个bug。如果_A_发生了变化,依赖于_A_的项目不应该重新构建,只有依赖于_A_的项目才需要重新构建。在之前的VS版本中,我曾经看到过当涉及自定义构建步骤时会出现这种情况。 - sbi
6个回答

2
分而治之:通过创建包含你正在处理的项目的逻辑子集的其他解决方案来限制构建时间,这将限制你的范围并加快构建速度。
请参阅此MSDN文章中的“分区单一解决方案模型”:http://msdn.microsoft.com/en-us/library/ee817674.aspx 文章中的关键引用:
Separate solution files allow you to work on smaller subsystems within your overall system 
but retain the key benefits of project references. Within each subsolution file, 
project references are used between constituent projects.

那么,这种方法会让您创建一个解决方案,包含一个项目(在此示例中为A项目),该项目仅引用所有其他项目的DLL,而不是所有其他项目?因此,在构建时,您只需要重新编译一个项目。 - wcm
不一定只是一个项目,但有可能。 - Paul Sasik

2

当项目中有一个文件实际上并不存在时,就会出现这种情况。
由于该文件不存在,项目无法确定是否已更改,因此需要重新构建。

只需查看项目中的所有文件,并搜索那个没有可展开箭头的文件即可。


可展开的箭头?那不仅适用于 GUI 类(例如 Windows Forms)和类似的复合结构吗?在我的某个项目/解决方案中,我有很多 .cs 文件(它们都存在),其中包含独立的简单类,它们没有箭头。 - Peter Mortensen

1
右键单击项目A时选择“仅构建”即可解决问题。我不确定在构建解决方案时是否有办法防止构建引用的项目(这是标准“构建”命令所做的)。

1
将构建输出详细度更改为详细,并查看顶部的内容。在我的情况下,它告诉我项目不是最新的,因为缺少一个文件。

你如何将构建输出详细程度更改为详细? - Peter Mortensen

0

确保您的项目依赖项正确。右键单击项目,然后转到“项目依赖项”。确保每个项目仅依赖于链接所需的最小其他项目集。


0
另一个需要注意的事情,因为我刚刚遇到了这个问题,就是如果你在打开解决方案并且同步视图时使用ClearCase,而且一些代码被同步更新,它有时会错误地设置文件的时间戳,因此它会一直认为你的源文件已经被修改,并且每次编译项目。
要解决这个问题,我不得不关闭解决方案并重新打开它,然后它就按预期运行了。

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