2010-06-22 303 views
843

Visual Studio中的Build Solution,Rebuild Solution和Clean Solution有什么区别?在Visual Studio中构建解决方案,重建解决方案和清理解决方案的区别?

什么时候适合使用其中的每一个?

+3

另见http://stackoverflow.com/questions/1247457/difference-between-rebuild-and-clean-build-in-visual-studio-2008 – Greg 2010-06-22 18:29:15

+3

[这里是一个很好的帖子,详细介绍](http://conceptf1.blogspot.com/2013/11/visual-studio-clean-build-and-rebuild-solution.html) – 2013-11-21 08:36:51

+1

重建和清洁一样吗? – 2015-04-14 15:22:22

回答

131

this link摘自:

构建意味着编译和链接只有自上次生成后发生变更 源文件,而重建 指编制,也不管他们是否 改变 文件链接,所有的源或不。建立是正常的 要做的事情,速度更快。有时 版本的项目目标 组件可能会失去同步, 重建是必要的,使生成 成功。在实践中,你永远不需要 需要清洁。

+3

[这是一个很好的帖子,详情](http://conceptf1.blogspot.com/2013/11/visual-studio-clean-build-and-rebuild-solution.html) – 2013-11-21 08:39:05

+1

链接?我认为一个DLL的概念,即动态链接库,是在运行时链接? – 2014-03-21 07:46:48

+2

“在实践中你永远不需要清洁”< - 我在这一个叫BS。 – piers7 2016-02-23 06:32:54

6

构建解决方案将构建解决方案中已更改的任何项目。无论如何,重建都会构建所有项目,干净的解决方案会删除所有临时文件,确保下一次构建完成。

26

构建解决方案 - 构建任何已更改文件的程序集。如果程序集没有更改,则不会重新构建。也不会删除任何中间文件。

最常用。

重建解决方案 - 重建所有程序集而不考虑更改,但留下中间文件。

当您注意到Visual Studio未将您的更改合并到最新程序集中时使用。有时Visual Studio会犯错误。

清理解决方案 - 删除所有中间文件 也不管变化

当所有不使用的重建所有组件和您需要清洁的一切行动,并重新开始。

+17

Clean不会构建。 – 2010-06-22 18:22:49

+3

@Jon Skeet - 每天学习新东西。我会发誓它做了重建。我想我的记忆并不总是像我想的那样可靠。 – 2010-06-22 18:25:08

688
  • Build solution将执行增量构建:如果它不认为它需要重建一个项目,它不会。它也可以使用部分建成位的项目,如果他们没有改变(我不知道多远借此)
  • Rebuild solution将干净,然后从头开始构建解决方案,而忽略任何它之前完成。
  • Clean solution将从以前的版本中删除构建工件。如果构建目标目录(bin和obj)中有任何其他文件,则它们可能不会被删除,但实际的构建工件是。我见过行为此而改变 - 有时删除相当彻底,有时不 - 但我会VS怀疑的时刻:)

的利益给予(该链接到devenv.exe的命令行开关,但它们与菜单项相同。)

+0

@Jon - Clean会根据我的经验擦除bin和obj文件夹吗? – womp 2010-06-22 18:24:30

+2

@womp:不在我刚刚看过的项目中。它仍然有所有的组装... – 2010-06-22 18:25:37

+1

@Jon - 很奇怪。我不记得有没有清理过这些目录。我现在正在做它,它正在擦除所有的.dll和.pdb文件。尽管如此,绝对会让我的ReSharper垃圾独处。 – womp 2010-06-22 18:27:32

13

我只是想到了重建作为执行清洁第一,然后是构建。也许我错了......评论?

+0

这没有upvotes(至今),并根据文档(请参阅乔恩的答案中的链接),这是完全正确的。 – Tod 2012-09-28 17:57:40

+2

我不这么认为。我有一种情况,在做一个干净的解决方案,其次是生成解决方案的作品,但做一个重建解决方案失败。这是一个新创建的解决方案,有两个项目(一个依赖于另一个)。 – Cthutu 2013-05-28 19:56:15

+0

@Cthutu看到Shivprasad的答案为细节,在这里有所作为。重建清理,然后一次构建每个单独的项目,而运行“清理”首先会立即清除所有内容,然后“构建”会立即构建。我已经运行了干净/构建顺序的这种变化使编译和编译不同的实例。 – Sean 2013-10-15 19:29:56

319

构建解决方案:编译已更改的代码文件(DLL和EXE)。

重建:删除所有已编译的文件并再次编译它们,而不管代码是否已更改。

干净的解决方案:删除所有编译的文件(DLL和EXE文件)。

你可以看到我已经证明了差异,下面是可视化表示,这将帮助你分析相同的详细此YouTube视频(Visual Studio Build vs. Rebuild vs. Clean (C# interview questions with answers))。

Build vs Rebuild

之间的差异与重建(清洁+版本),因为似乎有一些解决这个困惑,以及:

的区别在于构建和清洁顺序发生,每路项目。假设您的解决方案有两个项目,“proj1”和“proj2”。如果你做了重建,它将采用“proj1”,清理(删除)“proj1”的编译文件并构建它。之后,它将采用第二个项目“proj2”,清理“proj2”的编译文件并编译“proj2”。

但是,如果你做了一个“清理”和“构建”,它将首先删除“proj1”和“proj2”的所有编译文件,然后它将首先构建“proj1”,然后是“proj2”。

Rebuild Vs Clean

+17

谢谢你解释为什么重建不总是工作,而且在构建之前我经常需要清理。 – 2014-01-21 19:11:01

+4

是的,说明和第二张图非常有帮助和清晰。如果你可以修复“非法”流程图,那么“是”只能到一个地方,这会有所帮助。我真的不明白那个人想说什么,特别是在“重建”下的“Build ALL”。 – 2016-12-19 22:04:17

+0

@JonCoombs是的,我不认为第一个流程图捕捉到了他在视频中所说的内容。我*想*我插入的图像是Shivprasad所瞄准的。 – ruffin 2017-11-09 18:58:55

2

生成溶液只建立那些已在溶液中改变的项目,并且不影响该没有改变组件,

重建第一清洁,从溶液中的所有组件,然后生成整个解决方案无论做什么改变。

清洁,只是清理解决方案。

+0

[重建清理项目与Clean + Build不同](https://stackoverflow.com/a/17781143/6655092) – JakeD 2017-06-06 15:52:30

12

构建解决方案 - 构建已更改文件的任何程序集。如果程序集没有更改,则不会重新构建。也不会删除任何中间文件。

重建解决方案将干净,然后从头开始构建解决方案,忽略什么,它的完成之前

清理解决方案将删除所有已编译的文件(即EXE和dll)从斌/ OBJ目录。

6

构建解决方案 - 构建解决方案将构建您的应用程序,并构建具有任何文件更改的项目数。它并不清除任何现有的二进制文件,只是替换bin或obj文件夹中的更新程序集。

重建解决方案 - 重建解决方案将构建您的整个应用程序,同时构建您的解决方案中的所有项目并清理它们。在构建它之前,清除bin和obj文件夹中的所有二进制文件。

Clean Solution - 干净的解决方案只是清除bin和obj文件夹中的所有二进制文件。

2

生成解决方案

这将执行增量构建。换句话说,它只会构建已更改的代码文件。如果他们没有改变那些文件将不会被触及。

重建解决方案

这将删除所有当前编译的文件(即EXE和DLL)和将建立一切从头开始,无论是否有文件或不更改代码。

干净的解决方案菜单

此菜单将删除所有编译的文件(即EXE和dll)从斌/ OBJ目录。

重建=清洁+构建