Visual Studio中的构建解决方案、重新构建解决方案和清洁解决方案之间的区别是什么?

什么时候使用这些工具比较合适?


当前回答

我认为人们忽略的一件重要事情是,构建和清理都是基于Visual Studio对项目/解决方案的了解来执行的任务。我看到很多人抱怨Clean不能工作,或者留下剩余的文件,或者不值得信赖,而事实上,你说它不值得信赖的原因实际上使它更值得信赖。

Clean只会删除Visual Studio或编译器自己实际创建的文件和/或目录。如果你复制自己的文件,或者从外部工具或源创建的文件/文件夹结构,那么Visual Studio不会“知道它们的存在”,因此不应该接触它们。

你能想象如果Clean操作基本上执行了“del *”。*”?这可能是灾难性的。

Build对更改的或必要的项目执行编译。

不管更改或需要什么,Rebuild都会执行编译。

Clean会删除过去创建的文件/文件夹,但会保留最初与之无关的任何内容。

我希望这能说明一点问题并有所帮助。

其他回答

摘自此链接:

构建意味着只编译和链接已更改的源文件 从上次构建开始,而重新构建 意味着编译和链接所有源代码 文件,不管它们是否 改变与否。构建是常态 要做的事情,而且更快。有时 项目目标的版本 组件可能会不同步 重建是进行构建所必需的 成功的。在实践中,你永远不会 需要清洁。

这只涉及“构建解决方案”选项。

我完全受够了Visual Studio无法真正清理解决方案,所以写了这个小工具来为你做这件事。

首先在VS中关闭你的解决方案,并将它的文件夹从Windows资源管理器拖到这个应用程序或它的图标中。根据窗口底部的设置,它还可以删除额外的东西,这将有助于你手动上传你的解决方案到GitHub或与他人共享:

简而言之,它会把所有的“调试”文件夹、智能感知和其他可以被VS重建的缓存放入回收站。

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

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

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

我所知道的是一个清洁不做什么“使清洁”用来做-如果我清洁一个解决方案,我希望它删除obj和bin文件/文件夹,这样它就像是一个新的签出源。根据我的经验,虽然我经常发现,清洁和构建或重建仍然会在已知编译的源代码上产生奇怪的错误,需要手动删除bin/obj文件夹,然后它就会构建。

问题分为两部分……但是所有的答案(除了Justin Niessner)都只关注第一部分:区别。第二部分是我觉得更有趣的:“什么时候使用这些东西的合适时间?”但让我先说说我是如何看待它们的:

构建:应该并且通常会:生成(构建)相对于源文件已经过时的每个中间文件和输出文件。

重建:一种变通方法(hack),允许您在构建命令由于过时的计算错误而失败时进行构建。

Clean:删除生成的(中间文件和输出文件)文件,以便后续构建可以工作的一种hack实现。黑客,因为它经常删除不够。VS设计器将所有中间文件和输出文件放在单独的目录中。为什么不删除这些目录?但是,我跑题了。

没有明确的方法知道什么时候使用一个命令,什么时候使用另一个命令。知道它们的功能,并不能真正告诉我使用它们的适当情况。

这更多的是关于个性而不是科学。乐观主义者大部分时间都使用Build,但如果Build失败了,他们就会求助于Rebuild,他们认为问题出在Visual Studio的不稳定行为上。如果重建失败,他们就会进行清洁和重建。当这行不通时,他们就开始谷歌……

更悲观的人总是使用Rebuild,因为它更可靠,尽管每次使用都需要更长的时间。最悲观的人总是先清理再重建。他们忘记了有一个构建命令。他们还系着腰带和背带裤。

有些人可能认为这是愤世嫉俗。但是,我不这么认为。我认为Visual Studio的用户体验很糟糕,用户和行业已经习惯了它。更糟糕的是,由于VS无处不在,许多其他工具采用了相同的UX。

依我看,微软应该:修复Build,修复Clean,消除Rebuild