Когда вы предпочитаете ReBuild вместо Build? - PullRequest
10 голосов
/ 15 ноября 2010

Просто, чтобы было понятнее для меня, я хотел бы попросить вас, ребята, указать правильные условия, чтобы ваш

проект или решение Перестроить вместо сборка в Visual Studio?

Если я перефразирую это: зачем MS нужно было создать опцию «Перестроить ВСЕ» в Visual Studio? Каков был их главный мотив сделать это?

Спасибо!

Ответы [ 2 ]

7 голосов
/ 15 ноября 2010

DRY: Rebuild = Clean + Build для каждого проекта по очереди.

Build не удаляет результаты предыдущих сборок.Rebuild удаляет их и строит заново (один проект за раз, если вы находитесь в решении: удалите proj1 \ bin \ Debug, соберите proj1, удалите proj2 \ bin \ Debug ...).

Основной случайкогда я делаю перестройку (или чистую сборку), когда мне нужно обновить свое решение третьими зависимостями.Давайте посмотрим на следующее дерево папок:

    SOLUTION
      |__Dependencies
      |__PROJ_1
         |__bin
         |__obj
         |__(code)
      |__PROJ_2
         |__bin
         |__obj
         |__(code)

Если я изменю свои библиотеки DLL в Зависимостях и не буду перестраивать, VS (и MsBuild) все равно будет использовать предыдущую версию библиотеки DLL, которая находится в PROJ_N \ bin \Отладка (или в bin \ Release) из-за порядка поиска зависимостей (см. http://www.beefycode.com/post/Resolving-Binary-References-in-MSBuild.aspx):

  1. Файлы из текущего проекта - обозначены {CandidateAssemblyFiles}
  2. $(ReferencePath) - свойство ссылочного пути, полученное из файла .USER.
  3. Подсказка от самого ссылочного элемента, обозначенная {HintPathFromItem}.
    ...

Папка dll в bin идет в первом случае поиска, папка dll в папке Dependencies идет во втором случае ...

В таком случае я бы сделал clean (Debug), clean (Release)), а затем сборка, чтобы уничтожить все предыдущие версии в папке bin. Возможно, я немного переборщен, и перестройки может быть достаточно, но я не уверен, потому что библиотеки DLL находятся в папках Debug и Release ...

1 голос
/ 15 ноября 2010

Иногда что-то идет не так, и сборка просто не работает.

Это происходит, например, когда я неправильно обновляю зависимые библиотеки, которые затем неправильно копируются в пути к бинамиз сборки.Есть и другие примеры, которые не приходят в голову.

Вот тогда я использую rebuild.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...