Visual Studio中Rebuild和Clean + Build之间的区别

Jim*_*eth 295 rebuild build visual-studio-2008 visual-studio

只是重建和在Visual Studio 2008中执行Clean + Build之间有什么区别?是清洁 + 建立不同然后做清洁 + 重建

ear*_*arl 299

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

值得注意的细节:

  1. 对于多项目解决方案,"重建解决方案"执行"清理",然后为每个项目执行"构建"(可能并行).而"清洁解决方案"后跟"构建解决方案"首先清除所有项目(可能并行),然后构建所有项目(可能并行).当项目间的依赖关系发挥作用时,事件排序的这种差异会变得很大.

  2. 所有这三个操作都对应于MSBuild目标.因此,项目可以覆盖重建操作以执行完全不同的操作.

  • 除了Rebuild清除并逐个重建每个项目.Clean + Build清除所有这些,然后构建所有这些.如果你偶然点击它会产生差异:) (43认同)
  • 除了缺乏保证它们是相同的.请参阅下面的JaredPar答案,其中结合了伯爵的全貌.因为Rebuild依次执行每个项目,所以当您的依赖关系信息搞砸时,您可能会遇到"极端情况",并且您使用旧项目A获得B的无序构建项目,然后重建A,然后重建C.等等.完整解决方案清洁后跟一个完整的解决方案构建将捕获这种情况,而重建则不会.因此,你越是偏执和疲惫,你就越倾向于清洁然后建立. (25认同)
  • 这不是真的.我有一个Clean + Build成功的项目,Rebuild返回编译错误(循环文件引用).所以他们不是100%相同. (14认同)
  • 所以你要说*Rebuild***与*Clean*后跟*Build*完全相同**?这就是我的想法,但我不确定. (2认同)
  • 也许自从这篇文章发布以来,事情发生了变化,但是有一个解释说明了为什么Rebuild与clean + build不一样(不再?)http://stackoverflow.com/questions/3095901/difference-between-build-solution-rebuild-解决方案和清洁的解决方案在#17781143 (2认同)

Jar*_*Par 161

Earl是正确的,99%的时间Rebuild = Clean + Build.

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

非常一个极端的案例,但由于评论讨论指出它.

  • 99% 的时间都被大大高估了。 (2认同)

Tro*_*t.Z 56

1每个项目,重建项目=(清理项目+构建项目).

2每个解决方案,重建Sln = foreach项目(清理项目+构建项目)!= Clean Sln + Build Sln

假设您有一个Sln,包含proj1,proj2和proj3.

重建Sln =(Clean proj1 - > Build Proj1)+(Clean proj2 - > Build Proj2)+(Clean proj3 - > Build Proj3)

Clean Sln + Build Sln =(清洁proj1 + Clean proj2 + Clean proj3) - >(构建proj1 + Build proj2 + Build proj3)

- >表示串行,+表示并发

因此,当您没有正确配置项目依赖项时,有可能提交大量代码更改,Rebuild Sln会导致您的某些项目链接到陈旧的lib,因为所有构建都不能保证在完全清除之后.(在这种情况下,Clean Sln + Build Sln会给出链接错误,并立即通知您,而不是给您一个奇怪行为的应用程序)

  • 这个是最准确的答案,因为它解释了为什么有时我无法重建,但能够清理+构建. (7认同)

Edu*_*llo 11

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

构建意味着仅编译和链接自上次构建以来已更改的源文件,而重建意味着编译和链接所有源文件,无论它们是否更改.构建是正常的事情并且更快.有时,项目目标组件的版本可能会失去同步,并且必须进行重建才能使构建成功.在实践中,您永远不需要清洁.

构建或重建解决方案构建或重建解决方案中的所有项目,而构建或重建构建或重建StartUp项目,在上面的屏幕截图中"hello".要设置StartUp项目,请在Solution Explorer选项卡中右键单击所需的项目名称,然后选择Set as StartUp project.项目名称现在以粗体显示.由于家庭作业解决方案通常只有一个项目,因此构建或重建解决方案实际上与构建或重建相同.

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


Pra*_*age 5

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

其实没有!!!他们并不平等。

不同之处在于项目得到清理和构建的顺序。假设我们在一个解决方案中有两个项目。清理然后构建将对两个项目执行清理,然后构建将单独发生,而在重建项目 A 将获取并清理,然后在该项目 B 清理后构建,然后构建等等。