Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio Visual Studio中生成解决方案、重建解决方案和清理解决方案之间的区别?_Visual Studio - Fatal编程技术网

Visual studio Visual Studio中生成解决方案、重建解决方案和清理解决方案之间的区别?

Visual studio Visual Studio中生成解决方案、重建解决方案和清理解决方案之间的区别?,visual-studio,Visual Studio,Visual Studio中的生成解决方案、重建解决方案和清理解决方案之间有什么区别 什么时候使用这些工具合适?摘自: 构建意味着只编译和链接已更改的源文件 自上次生成以来,在重新生成时 意味着编译和链接所有源代码 文件,无论它们是否 改变与否。身材是正常的 事情要做,而且速度更快。有时 项目目标的版本 组件可能会失去同步,并且 重建是进行构建所必需的 成功的实际上,你永远不会 需要清洁 生成解决方案将生成解决方案中已更改的任何项目。重建生成所有项目无论发生什么情况,clean solution

Visual Studio中的生成解决方案、重建解决方案和清理解决方案之间有什么区别

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

摘自:

构建意味着只编译和链接已更改的源文件 自上次生成以来,在重新生成时 意味着编译和链接所有源代码 文件,无论它们是否 改变与否。身材是正常的 事情要做,而且速度更快。有时 项目目标的版本 组件可能会失去同步,并且 重建是进行构建所必需的 成功的实际上,你永远不会 需要清洁


生成解决方案将生成解决方案中已更改的任何项目。重建生成所有项目无论发生什么情况,clean solution都会删除所有临时文件,以确保下一个生成完成。

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

最常用的

重建解决方案-重建所有程序集,而不考虑更改,但保留中间文件

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

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

当所有其他操作都失败,您需要清理一切并重新开始时使用。

  • 将执行增量构建:如果它认为不需要重建项目,则不会。如果它们没有改变,它也可能使用部分构建的项目部分(我不知道这需要多长时间)
  • 将清理并从头开始构建解决方案,忽略以前所做的任何操作。这与“先清理,然后构建”的区别在于,重建将清理然后构建每个项目,一次一个,而不是先清理所有项目,然后构建所有项目
  • 将从以前的生成中删除生成工件。如果构建目标目录(bin和obj)中有任何其他文件,则它们可能不会被删除,但实际的构建工件会被删除。我已经看到这种情况下的行为各不相同——有时完全删除,有时不删除——但我将暂时给出VS的好处:)

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

我认为重建是先执行清理,然后执行生成。也许我错了。。。注释?

生成解决方案:编译更改的代码文件(DLL和EXE)

重新生成:删除所有已编译的文件并重新编译它们,无论代码是否已更改

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

你可以看到这段YouTube视频(),我在这里演示了它们的区别,下面是一些视觉表现,它们将帮助你更详细地分析它们

重建与(清理+构建)之间的区别,因为在这方面似乎也存在一些混淆:

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

但如果执行“清理”并生成,它将首先删除“proj1”和“proj2”的所有编译文件,然后首先生成“proj1”,然后生成“proj2”


生成解决方案仅生成解决方案中已更改的项目,不会影响未更改的程序集

“重建”首先清理解决方案中的所有程序集,然后构建整个解决方案,而不管所做的更改如何


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

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

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


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

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

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

你能想象清洁操作是否基本上执行了“del***”?这可能是灾难性的

构建对更改或必要的项目执行编译

重建执行编译,而不考虑更改或需要什么

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


我希望这能详细说明一下,并对您有所帮助。

我所知道的是,一个干净的解决方案并不像“makeclean”过去所做的那样——如果我清理一个解决方案,我希望它删除obj和bi