协慌网

登录 贡献 社区

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#面试问题) )我已经证明了这些差异,下面是可视化表示,可以帮助你更详细地分析它们。

构建与重建

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

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

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

重建与清洁

取自此链接

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