Visual Studio中的构建解决方案、重建解决方案和清洁解决方案有什么区别?
什么时候是使用其中每一个的合适时机?
取自此链接:
构建意味着仅编译和链接已更改的源文件自上次构建以来,而重建意味着编译并链接所有源文件,无论它们改变与否。构建是正常的要做的事情,而且更快。有时项目目标的版本组件可能会不同步并且重建是必要的使建设成功。在实践中,你从来没有需要清洁
生成解决方案将生成解决方案中已更改的任何项目。无论如何,重新生成都会生成所有项目,干净的解决方案会删除所有临时文件,以确保下一次生成完成。
构建解决方案-构建任何已更改文件的程序集。如果程序集没有更改,则不会重新构建。也不会删除任何中间文件。
最常用。
重建解决方案-重建所有程序集,无论更改如何,但保留中间文件。
当您注意到Visual Studio没有将您的更改合并到最新程序集中时使用。有时Visual Studio确实会出错。
清洁解决方案-删除所有中间文件。
当其他一切都失败了,你需要清理一切,重新开始时使用。
(链接指向devenv.exe命令行开关,但它们的作用与菜单项相同。)
我只是认为重建是先执行清洁,然后再执行构建。也许我错了…评论?
构建解决方案:编译已更改的代码文件(DLL和EXE)。
重建:删除所有已编译文件并再次编译它们,无论代码是否已更改。
干净的解决方案:删除所有编译文件(DLL和EXE文件)。
您可以看到这个YouTube视频(Visual Studio Build vs. Rebuild vs. Clean(带有答案的C#面试问题)),其中我已经演示了差异,下面是可视化表示,这将帮助您更详细地分析相同的内容。
重建与(清洁+构建)之间的区别,因为围绕这一点似乎也有一些混乱:
不同之处在于每个项目的构建和清理顺序发生的方式。假设您的解决方案有两个项目,“项目1”和“项目2”。如果您进行重建,它将采用“项目1”,清理(删除)“项目1”的编译文件并构建它。之后,它将采用第二个项目“项目2”,清理“项目2”的编译文件并编译“项目2”。
但是,如果您执行“清理”和“构建”,它将首先删除所有已编译的文件,然后它将首先构建“项目1”,然后是“项目2”。
构建解决方案仅构建解决方案中已更改的项目,不影响未更改的程序集,
ReBuild首先清除解决方案中的所有程序集,然后构建整个解决方案,而不管所做的更改如何。
清洁,只需清洁溶液。
构建解决方案-构建解决方案将通过构建具有任何文件更改的项目数量来构建您的应用程序。它不会清除任何现有的二进制文件,只是替换bin或obj文件夹中的更新程序集。
重建解决方案-重建解决方案将通过构建解决方案中可用的所有项目并清理它们来构建您的整个应用程序。在构建之前,它会清除bin和obj文件夹中的所有二进制文件。
清洁解决方案-清洁解决方案只是清除bin和obj文件夹中的所有二进制文件。
我认为人们忽略的一件主要事情是,构建和清理都是基于Visual Studio对您的项目/解决方案的了解来执行的任务。我看到很多人抱怨清洁不起作用或留下剩余文件或不值得信赖,而事实上,您说它不值得信赖的原因实际上使它更值得信赖。
Clean只会删除Visual Studio或编译器自己实际创建的文件和/或目录。如果您复制自己的文件或从外部工具或源创建的文件/文件夹结构,则Visual Studio不知道它们存在,因此不应触摸它们。
你能想象如果清洁操作基本上执行了“del *. *" ? 这可能是灾难性的。
构建对更改或必要的项目执行编译。
重建执行编译,无论更改或需要什么。
干净删除它过去创建的文件/文件夹,但最初会留下与它无关的任何内容。
我希望这能说明一点并有所帮助。
我所知道的是一个清洁不做什么“让清洁”用来做-如果我清理一个解决方案,我希望它删除obj和bin文件/文件夹,这样它就像是一个新的签出的源代码。在我的经验中,虽然我经常发现清洁和构建或重建仍然在源代码上产生奇怪的错误已知编译,需要的是手动删除bin/obj文件夹,然后它会构建。
我有一个空白的解决方案BuildRebuildClean和三个类库Models、Repository、Notification。
BuildRebuildClean
Models
Repository
Notification
我在Notification类库中使用Models和Repository。
然后:
这仅涉及“构建解决方案”选项。
我完全厌倦了Visual Studio无法真正清理解决方案,并编写了这个小工具来帮助您。
首先在VS中关闭您的解决方案,并将其文件夹从Windows资源管理器拖到此应用程序或其图标中。根据其窗口底部的设置,它还可以删除其他内容,如果您尝试手动将解决方案上传到GitHub或与其他人共享,这将有所帮助:
简而言之,它会将所有“调试”文件夹、智能感知和其他可以由VS重建的缓存放入回收站。
Clean将清理bin/Debug文件夹中的工件。意味着删除bin/Debug文件夹中的所有文件。
Clean
Build检查bin/Debug文件夹中的工件,如果需要,然后创建工件(同时检查构建时错误)。
Build
Rebuild=Clean+Build。这将首先删除bin/Debug文件夹中的所有文件,然后在bin/Debug文件夹中再次创建工件。
Rebuild
可以通过打开和观察bin/Debug(或Release)文件夹,然后清理、构建和重建项目来确认这些操作。
**Build ,Rebuild, Clean Solution**
清洁解决方案:删除所有编译文件(所有dll和exe)。
构建解决方案:编译已更改的代码文件(dll和exe)。
重建解决方案:删除所有已编译的文件并再次编译它们,无论代码是否更改。