在Visual Studio中重建和清洁+构建的区别

在Visual Studio 2008中只做重建和做清洁 + 构建之间的区别是什么?清洁 + 构建和做清洁 + 重建有区别吗?

87838 次浏览

重建=清洁+构建(通常)

值得注意的细节:

  1. 对于多项目解决方案,“重建解决方案”对每个项目执行“清理”,然后执行“构建”(可能是并行的)。然而,“清洁解决方案”后面跟着“构建解决方案”,首先清理所有项目(可能是并行的),然后构建所有项目(可能是并行的)。当项目间依赖关系开始发挥作用时,事件顺序上的这种差异可能变得非常显著。

  2. 所有三个操作都对应于MSBuild目标。因此,项目可以覆盖Rebuild操作来做一些完全不同的事情。

Earl在99%的情况下重建=清洁+构建是正确的。

但不能保证它们是一样的。这3个动作(重建、构建、清除)代表不同的MSBuild目标。每一个都可以被任何项目文件覆盖以执行自定义操作。因此,在启动clean + build(或完全删除它们)之前,完全有可能覆盖rebuild来执行几个操作。

这是一个非常极端的情况,但由于评论讨论而指出了它。

http://www.cs.tufts.edu/r/graphics/resources/vs_getting_started/vs_getting_started.htm,(只是谷歌它):

Build意味着编译并链接自上次构建以来已经更改的源文件,而Rebuild意味着编译并链接所有源文件,而不管它们是否更改。构建是正常的事情,而且更快。有时项目目标组件的版本可能会不同步,为了使构建成功,必须重新构建。在实践中,你永远不需要Clean。

构建或重建解决方案构建或重建解决方案中的所有项目,而构建或重建则构建或重建StartUp项目,上面的屏幕截图中的“你好”。要设置StartUp项目,请在“解决方案资源管理器”选项卡中右键单击所需的项目名称,并选择“设置为StartUp项目”。项目名称现在以粗体显示。由于作业解决方案通常只有一个项目,因此构建或重建解决方案实际上与构建或重建相同。

Compile只编译当前正在编辑的源文件。当其余源文件处于不完整状态时,可以快速检查错误,这将阻止整个项目的成功构建。Ctrl-F7是编译的快捷键。

让我们根据默认的Clean和Build实现来定义默认的Rebuild实现:

  1. 每个项目:重建项目=清理项目+构建项目。

  2. 每个解决方案:重建sln = sln中的foreach项目(清洁项目+构建项目)。

注意,由于执行顺序的不同,重建sln与(Clean sln + Build sln) = (sln Clean项目中的foreach项目)+ (sln Build项目中的foreach项目)并不相同。此外,这个“foreach”可以并发执行,因此不同的任务可以在两种场景中并发运行。

假设您有一个包含proj1、proj2和proj3的sln。

  • 重建sln =(清洁项目1 +构建项目1)&(清洁项目2 +建设项目2)&(清洁项目3 +建设项目3)

  • 清洁Sln +构建Sln =(清洁项目1 &清洁项目;清洁项目3)+(构建项目1 &建立项目2 &构建proj3)

+表示串行,&意味着并发。

因此,如果项目依赖项没有正确配置,那么在执行Rebuild sln时,可能会有一些项目链接到一个过时的库。这是因为不能保证在第一次构建开始之前完成所有清理。如果你执行Clean sln + Build sln,他们会给出一个链接错误,并立即让你知道,而不是给你一个有奇怪行为的应用程序。

从作者链接为对这个问题的评论这篇博文:

其实不! !它们是不平等的。

不同之处在于项目获得清洁和构建的顺序。让 假设我们在一个解决方案中有两个项目。清洁,然后建立意志 对两个项目执行clean,然后将单独进行构建 而在重建时,项目A将获得和清洁,然后再建造 项目B将被清理,然后构建,等等

另一个不同之处是:Clean会清除测试资源管理器中的测试结果,而Rebuild不会。

Visual Studio 2022的文档解释说:

  • 选择BuildBuild Solution,或按Ctrl+Shift+B,只编译那些自最近构建以来已经更改的项目文件和组件。当一个解决方案包含多个项目时,生成命令变成生成解决方案。
  • 选择Rebuild Solution为“clean”;解决方案,然后构建所有项目文件和组件。
  • 选择Clean Solution删除任何中间文件和输出文件。在只剩下项目和组件文件的情况下,可以构建中间文件和输出文件的新实例。

build-configuration-manager-menu .

这个,以及更多信息,在这里:https://learn.microsoft.com/en-us/visualstudio/ide/building-and-cleaning-projects-and-solutions-in-visual-studio?view=vs-2022