Visual Studio中重build和清理+构build的区别

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

重build=清洁+build设

值得注意的细节:

  1. 对于多项目解决scheme,“重build解决scheme”为每个项目(可能并行)做一个“清理”,然后是“构build”。 而“清洁解决scheme”之后是“构build解决scheme”,首先清除所有项目(可能并行),然后构build所有项目(可能并行)。 当项目间的依赖关系发挥作用时,这种事件sorting的差异可能变得非常重要。

  2. 所有这三个操作都对应于MSBuild目标。 所以一个项目可以重写重build动作来做一些完全不同的事情。

伯爵是正确的,99%的时间重build=清洁+build设。

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

非常多的情况下,但由于评论讨论指出。

1每个项目,重build项目=(清理项目+生成项目)。

2每个解决scheme,重buildSln = foreach项目(清理项目+生成项目)!=清理sln +生成sln

假设你有一个Sln,包含proj1,proj2和proj3。

重buildSln =(清理proj1 – >生成Proj1)+(清理proj2 – >生成Proj2)+(清理proj3 – >生成Proj3)

Clean Sln + Build Sln =(Clean proj1 + Clean proj2 + Clean proj3) – >(Build proj1 + Build proj2 + Build proj3)

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

所以如果你没有正确configuration项目的依赖关系,你就有机会提交大量的代码更改,重buildSln会导致你的一些proj链接到一个陈旧的lib,因为所有的构build都不能保证被全部清除。在这种情况下,Clean Sln + Build Sln会给出一个链接错误,让你马上知道,而不是给你一个奇怪的行为应用程序)

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

构build意味着只编译和链接自上一次构build以来已更改的源文件,而重build意味着编译和链接所有源文件,而不pipe它们是否更改。 构build是正常的事情,速度更快。 有时,项目目标组件的版本可能会不同步,重build对于使构build成功是必要的。 在实践中,你永远不需要清洁。

构build或重build解决scheme构build或重build解决scheme中的所有项目,而构build或重build构build或重build上面的屏幕截图中的启动项目“hello”。 要设置启动项目,请在解决scheme资源pipe理器选项卡上右键单击所需的项目名称,然后select设为启动项目。 项目名称现在以粗体显示。 由于作业解决scheme通常只有一个项目,所以Build或Rebuild Solution与Build或Rebuild实际上是一样的。

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

从这篇博客文章作者对这个问题的评论 :

其实没有! 他们是不平等的。

不同之处在于项目得到清理和build设。 假设我们在解决scheme中有两个项目。 清理,然后构build将执行干净的两个项目,然后build设将单独发生,而重build项目A将得到和清理,然后build立后,项目B将是干净的,然后build立等等。