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



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

747   5  

5 ответов:

Rebuild = Clean + Build

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

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

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

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

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

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

1 на проект, перестроить проект = (Чистый проект + построить проект).

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

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

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

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

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

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

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

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

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

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

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

Вообще-То Нет!!! они не равны.

разница в последовательности проектов получить чистый и построить. Позволять скажем, у нас есть два проекта в решении. Чистый, а затем построить будет выполните очистку для обоих проектов, а затем сборка будет происходить индивидуально в то время как на перестроить проект A будет получить и очистить, а затем построить после этот проект B будет чистой, а затем построить и так далее.

Comments

    Ничего не найдено.