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

Difference between Build Solution, Rebuild Solution, and Clean Solution in Visual Studio?

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

什么时候适当使用这些中的每一个?


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

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


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

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

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

你可以看到这个YouTube视频(Visual Studio Build vs. Rebuild vs. Clean(带答案的C#面试问题))我已经证明了这些差异,下面是可视化表示,可以帮助你更详细地分析它们。

Build vs Rebuild

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

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

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

Rebuild Vs Clean


取自此链接:

Build means compile and link only the source files that have changed
since the last build, while Rebuild
means compile and link all source
files regardless of whether they
changed or not. Build is the normal
thing to do and is faster. Sometimes
the versions of project target
components can get out of sync and
rebuild is necessary to make the build
successful. In practice, you never
need to Clean.


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

最常用的。

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

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

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

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


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

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

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


我只想到Rebuild首先执行Clean,然后是Build。也许我错了......评论?


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


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

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

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


我认为人们遗漏的一个主要问题是Build和Clean都是基于Visual Studio对您的项目/解决方案的了解而执行的任务。我看到很多抱怨说Clean不起作用或留下剩余的文件或者不值得信任,事实上,你说它不值得信任的原因实际上使它更值得信赖。

Clean只会删除(干净)Visual Studio或编译器本身实际创建的文件和/或目录。如果您复制自己的文件或文件/文件夹结构是从外部工具或源创建的,则Visual Studio不会"知道它们存在",因此不应触及它们。

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

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

无论变化或需要什么,重建都会执行编译。

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

我希望这有点阐述并有所帮助。


构建解决方案

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

重建解决方案

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

清洁解决方案菜单

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

重建=清洁+构建


所有我知道的是一个Clean不会做什么"make clean"用来做 - 如果我清理一个解决方案,我希望它删除obj和bin文件/文件夹,这样它构建就像是一个新的结帐源。根据我的经验,虽然我经常发现清理和构建或重建仍然会在编译已知的源上产生奇怪错误的时间,并且需要手动删除bin / obj文件夹,然后它将构建。


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

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

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