Visual Studio中的构建解决方案,重建解决方案和清洁解决方案之间的区别?

时间:2010-06-22 18:17:20

标签: visual-studio

Visual Studio中的Build Solution,Rebuild Solution和Clean Solution有什么区别?

何时适合使用其中每一种?

15 个答案:

答案 0 :(得分:829)

  • Build solution将执行增量构建:如果它不认为它需要重建项目,它不会。如果它们没有改变,它也可以使用项目的部分构建位(我不知道它需要多长时间)
  • Rebuild solution将清理然后从头开始构建解决方案,忽略之前所做的任何事情。这与“Clean,然后是Build”之间的区别在于Rebuild将清理 - 然后 - 一次一个地构建每个项目,而不是清理所有项目,然后构建所有项目。
  • Clean solution将从之前的版本中删除构建工件。如果构建目标目录(bin和obj)中有任何其他文件,则可能不会删除它们,但实际的构建工件是。我已经看到这种行为有所不同 - 有时删除相当彻底,有时不会 - 但我现在会给VS带来疑问的好处:)

(链接指向 devenv.exe 命令行开关,但它们与菜单项的作用相同。)

答案 1 :(得分:405)

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

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

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

您可以看到此YouTube视频( Visual Studio Build vs. Rebuild vs. Clean (C# interview questions with answers) ),其中我展示了差异,以下是可视化表示,可帮助您更详细地分析相同内容。

Build vs Rebuild

Rebuild与(Clean + Build)之间的区别,因为这周围似乎也存在一些混淆:

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

但如果你做“干净”并构建“,它将首先删除”proj1“和”proj2“的所有编译文件,然后它将首先构建”proj1“,然后是”proj2“。

Rebuild Vs Clean

答案 2 :(得分:139)

取自this link

  

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

答案 3 :(得分:32)

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

最常用。

重建解决方案 - 无论更改如何,都会重建所有程序集,但会保留中间文件。

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

清洁解决方案 - 删除所有中间文件。

当所有其他方法都失败并且您需要清理所有内容并重新开始时使用。

答案 4 :(得分:13)

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

重建解决方案将清理然后从头开始构建解决方案,忽略之前完成的任何事情

Clean Solution 将从bin / obj目录中删除所有已编译的文件(即EXE和DLL)。

答案 5 :(得分:12)

我只想将Rebuild视为执行Clean然后是Build。也许我错了......评论?

答案 6 :(得分:7)

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

答案 7 :(得分:7)

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

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

清洁解决方案 - 清理解决方案只是清除bin和obj文件夹中的所有二进制文件。

答案 8 :(得分:4)

我认为人们遗漏的一件事是构建和清理都是基于Visual Studio对您的项目/解决方案的了解而执行的任务。我看到很多抱怨,说Clean不能正常工作或留下剩余文件或不可信,实际上,实际上,您说它不可信的原因实际上使其变得更可信。

Clean只会删除(清理)Visual Studio或编译器本身实际上创建的文件和/或目录。如果您复制自己的文件或从外部工具或源创建的文件/文件夹结构,则Visual Studio不会“知道它们存在”,因此,请勿触摸它们。

您能想象清理操作是否基本上执行了“ del *。*”?这可能是灾难性的。

构建对更改或必要的项目进行编译。

重建执行编译,而不考虑更改或必要内容。

清洁会删除它过去创建的文件/文件夹,但最初会保留所有与它无关的文件。

我希望这能对我们有所帮助。

答案 9 :(得分:3)

构建解决方案

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

重建解决方案

这将删除所有当前编译的文件(即exe和DLL),并将从头开始构建所有内容,无论文件中是否有代码更改。

清洁解决方案菜单

此菜单将从bin / obj目录中删除所有已编译的文件(即EXE和DLL)。

重建=清洁+构建

答案 10 :(得分:1)

构建解决方案仅构建解决方案中已更改的项目,并且不会影响未更改的程序集,

ReBuild首先清除解决方案中的所有程序集,然后构建整个解决方案,无论所做的更改如何。

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

答案 11 :(得分:1)

我所知道的只是一个Clean不会做以前做过的“ make clean”操作-如果我清洁一个解决方案,我希望它删除obj和bin文件/文件夹,以便其生成就像是对源代码的全新签出。根据我的经验,尽管我经常发现“清理并生成或重建”仍会在已知要编译的源上产生奇怪的错误,并且需要手动删除bin / obj文件夹,然后将建立。

答案 12 :(得分:1)

这仅与“构建解决方案”选项有关。

我完全厌倦了Visual Studio无法真正清理解决方案的能力,并写了this little tool会为您做的。

首先在VS中关闭解决方案,然后将其文件夹从Windows资源管理器拖到该应用程序或图标中。根据其窗口底部的设置,它还可以删除其他内容,如果您尝试将解决方案手动上传到GitHub或与他人共享它,这将有所帮助。

enter image description here

简而言之,它将所有VS可以重建的“调试”文件夹,Intellisense和其他缓存放入回收站。

答案 13 :(得分:0)

我有一个空白的解决方案BuildRebuildClean和三个类库ModelsRepositoryNotification

我在Models类库中使用RepositoryNotification

然后:

  • 构建解决方案增量构建,仅编译已更改的文件。如果装配体没有变化, 它不会被重建。同样,它不会删除任何中间文件。 如果修改Models库项目中的某些代码,则构建解决方案。 在下面的屏幕快照中,请参考DLL的时间戳,ModelsNotification库中的EXE已更新。 enter image description here

  • 重建解决方案删除所有已编译的文件并编译所有文件,而不考虑更改, 忽略之前所做的任何事情。 右键单击解决方案名称BuildRebuildClean。它所做的是删除所有程序集, EXE和引用文件重新编译。 enter image description here

  • 清洁解决方案从bin / obj目录中删除所有已编译的中间文件(即EXE和DLL)。 enter image description here

答案 14 :(得分:0)

Clean 将清除 bin/Debug 文件夹中的工件。表示删除bin/Debug文件夹中的所有文件。

Build 检查 bin/Debug 文件夹中的工件,如果需要,然后创建工件(同时检查构建时错误)。

Rebuild = Clean + Build 一次性完成。这将首先删除 bin/Debug 文件夹中的所有文件,然后在 bin/Debug 文件夹中再次创建工件。

可以通过打开并观察 bin/Debug(或 Release)文件夹,然后清理、构建和重建项目来确认这些操作。