Visual Studio中的构建解决方案、重新构建解决方案和清洁解决方案之间的区别是什么?
什么时候使用这些工具比较合适?
Visual Studio中的构建解决方案、重新构建解决方案和清洁解决方案之间的区别是什么?
什么时候使用这些工具比较合适?
当前回答
生成解决方案只生成解决方案中已更改的项目,而不影响未更改的程序集,
ReBuild首先清理解决方案中的所有程序集,然后构建整个解决方案,而不管所做的更改。
清洁,简单地清洗溶液。
其他回答
生成解决方案只生成解决方案中已更改的项目,而不影响未更改的程序集,
ReBuild首先清理解决方案中的所有程序集,然后构建整个解决方案,而不管所做的更改。
清洁,简单地清洗溶液。
生成解决方案-生成已更改文件的任何程序集。如果程序集没有任何更改,则不会重新构建它。也不会删除任何中间文件。
最常用的。
重新构建解决方案——无论发生什么更改,都重新构建所有程序集,但保留中间文件。
当您注意到Visual Studio没有将您的更改合并到最新程序集中时使用。有时候Visual Studio也会犯错误。
清洁解决方案-删除所有中间文件。
当一切都失败,你需要清理一切,重新开始时使用。
这只涉及“构建解决方案”选项。
我完全受够了Visual Studio无法真正清理解决方案,所以写了这个小工具来为你做这件事。
首先在VS中关闭你的解决方案,并将它的文件夹从Windows资源管理器拖到这个应用程序或它的图标中。根据窗口底部的设置,它还可以删除额外的东西,这将有助于你手动上传你的解决方案到GitHub或与他人共享:
简而言之,它会把所有的“调试”文件夹、智能感知和其他可以被VS重建的缓存放入回收站。
Build solution will perform an incremental build: if it doesn't think it needs to rebuild a project, it won't. It may also use partially-built bits of the project if they haven't changed (I don't know how far it takes this) Rebuild solution will clean and then build the solution from scratch, ignoring anything it's done before. The difference between this and "Clean, followed by Build" is that Rebuild will clean-then-build each project, one at a time, rather than cleaning all and then building all. Clean solution will remove the build artifacts from the previous build. If there are any other files in the build target directories (bin and obj) they may not be removed, but actual build artifacts are. I've seen behaviour for this vary - sometimes deleting fairly thoroughly and sometimes not - but I'll give VS the benefit of the doubt for the moment :)
(这些链接指向devenv.exe命令行开关,但它们的功能与菜单项相同。)
编译解决方案:编译已更改的代码文件(DLL和EXE)。
重建:删除所有编译过的文件,并重新编译它们,不管代码是否更改。
清洁解决方案:删除所有编译过的文件(DLL和EXE文件)。
你可以在YouTube上看到这个视频(Visual Studio Build vs. Rebuild vs. Clean (c#面试问题及答案)),我已经演示了其中的差异,下面是可视化表示,它将帮助你更详细地分析相同的内容。
重建和(清洁+构建)之间的区别,因为这似乎也有一些困惑:
不同之处在于每个项目的构建和清理序列发生的方式。假设您的解决方案有两个项目,“proj1”和“proj2”。如果你重新构建,它将使用“proj1”,清除(删除)“proj1”的编译文件并构建它。之后,它将获取第二个项目“proj2”,清理“proj2”的编译文件并编译“proj2”。
但是如果你做了“清理”和“构建”,它将首先删除“proj1”和“proj2”的所有编译文件,然后它将首先构建“proj1”,然后是“proj2”。