Разница между Rebuild и Clean + Build в Visual Studio

в чем разница между просто восстановить и очистить + построить в Visual Studio 2008? Is очистить + построить другое, то делаю очистить + восстановить?

5 ответов


Перестроить = Очистить + Построить

заметные детали:

  1. для решения с несколькими проектами "перестроить решение "выполняет" очистить", а затем" построить " для каждого проекта (возможно, параллельно). В то время как" чистое решение", за которым следует" решение для сборки", сначала очищает все проекты (возможно, параллельно), а затем строит все проекты (возможно, параллельно). Эта разница в последовательности событий может стать значительной, когда межпроектные зависимости вступают в играть.

  2. все три действия соответствуют целям MSBuild. Таким образом, проект может переопределить действие перестроения, чтобы сделать что-то совершенно другое.


Эрл прав, что 99% времени Rebuild = Clean + Build.

но они не гарантированно будут одинаковыми. 3 действия (перестроить, построить, очистить) представляют различные цели MSBuild. Каждый из которых может быть переопределен любым файлом проекта для выполнения пользовательских действий. Таким образом, вполне возможно, что кто-то переопределит rebuild, чтобы сделать несколько действий перед началом clean + build (или полностью удалить их).

очень много случай, а из-за комментировать дискуссии.


1 на проект, Rebuild project = (чистый проект + проект сборки).

2 на решение, перестроить Sln = проект foreach (чистый проект + проект сборки)!= Очистить Sln + Построить Sln

скажем, у вас есть Sln, содержит proj1, proj2 и proj3.

восстановить СЛН = (чистая проект1 -> построить Проект1) + (чистые proj2 -> построить Proj2) + (чистые proj3 -> Proj3 построить)

очистить СЛН + построить СЛН = (чистая проект1 + чистый proj2 + чистый proj3) -> (сборка проект1 + сборка proj2 + построить proj3)

- > означает последовательный, + означает параллельный

таким образом, есть шанс, когда вы отправляете много изменений кода, в то время как вы не настроили зависимости проекта правильно, перестроить Sln вызовет некоторые из вас proj ссылку на устаревшую lib, потому что все сборки не гарантируется после всех очищает.(В этом случае Clean Sln + Build Sln даст ошибку ссылки и сразу же сообщит вам об этом, вместо того, чтобы давать вам приложение с нечетным поведением)


от http://www.cs.tufts.edu/r/graphics/resources/vs_getting_started/vs_getting_started.htm (просто погуглил):

Build означает компилировать и связывать только исходные файлы, которые изменились с момента последней сборки, а Rebuild означает компилировать и связывать все исходные файлы независимо от того, изменились они или нет. Сборка-это нормальная вещь и быстрее. Иногда версии целевых компонентов проекта могут выйти из синхронизации и перестроить, чтобы сделать стройте успешно. На практике вам никогда не нужно убирать.

Build или Rebuild Solution строит или перестраивает все проекты в вашем решении, в то время как Build или Rebuild строит или перестраивает проект запуска, "привет" на снимке экрана выше. Чтобы задать начальный проект, щелкните правой кнопкой мыши нужное имя проекта на вкладке Обозреватель решений и выберите Установить как начальный проект. Название проекта теперь выделено жирным шрифтом. Поскольку решения домашней работы обычно имеют только один проект, Build или Решение Rebuild фактически совпадает с решением Build или Rebuild .

Compile просто компилирует исходный файл, который в настоящее время редактируется. Полезно быстро проверять наличие ошибок, когда остальные исходные файлы находятся в неполном состоянии, что предотвратит успешную сборку всего проекта. Ctrl-F7-это клавиша быстрого доступа для компиляции.


с этот блог который автор связал как комментарий к этому вопросу:

На Самом Деле Нет!!! они не равны.

разница заключается в последовательности проектов get clean и build. Позволять скажем, у нас есть два проекта в решении. Очистить, а затем построить будет выполните clean для обоих проектов, а затем сборка будет выполняться индивидуально в то время как на rebuild project A будет получать и чистить, а затем строить после этот проект B будет чистым, а потом строить и так далее.