Visual Studio中的Build Solution,Rebuild Solution和Clean Solution有什么区别?
何时适合使用其中每一种?
答案 0 :(得分:829)
(链接指向 devenv.exe 命令行开关,但它们与菜单项的作用相同。)
答案 1 :(得分:405)
构建解决方案:编译已更改的代码文件(DLL和EXE)。
重建:删除所有已编译的文件并再次编译它们,无论代码是否已更改。
清洁解决方案:删除所有已编译的文件(DLL和EXE文件)。
您可以看到此YouTube视频( Visual Studio Build vs. Rebuild vs. Clean (C# interview questions with answers) ),其中我展示了差异,以下是可视化表示,可帮助您更详细地分析相同内容。
Rebuild与(Clean + Build)之间的区别,因为这周围似乎也存在一些混淆:
不同之处在于每个项目的构建和清理顺序的发生方式。假设您的解决方案有两个项目,“proj1”和“proj2”。如果你进行重建,它将采用“proj1”,清理(删除)“proj1”的编译文件并构建它。之后它将采用第二个项目“proj2”,清理“proj2”的编译文件并编译“proj2”。
但如果你做“干净”并构建“,它将首先删除”proj1“和”proj2“的所有编译文件,然后它将首先构建”proj1“,然后是”proj2“。
答案 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或与他人共享它,这将有所帮助。
简而言之,它将所有VS可以重建的“调试”文件夹,Intellisense和其他缓存放入回收站。
答案 13 :(得分:0)
我有一个空白的解决方案BuildRebuildClean
和三个类库Models
,Repository
,Notification
。
我在Models
类库中使用Repository
和Notification
。
然后:
答案 14 :(得分:0)
Clean
将清除 bin/Debug 文件夹中的工件。表示删除bin/Debug文件夹中的所有文件。
Build
检查 bin/Debug 文件夹中的工件,如果需要,然后创建工件(同时检查构建时错误)。
Rebuild
= Clean
+ Build
一次性完成。这将首先删除 bin/Debug 文件夹中的所有文件,然后在 bin/Debug 文件夹中再次创建工件。
可以通过打开并观察 bin/Debug(或 Release)文件夹,然后清理、构建和重建项目来确认这些操作。