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):
- Файлы из текущего проекта - обозначены
{CandidateAssemblyFiles}
$(ReferencePath)
- свойство ссылочного пути, полученное из файла .USER
. - Подсказка от самого ссылочного элемента, обозначенная
{HintPathFromItem}
.
...
Папка dll в bin идет в первом случае поиска, папка dll в папке Dependencies идет во втором случае ...
В таком случае я бы сделал clean (Debug), clean (Release)), а затем сборка, чтобы уничтожить все предыдущие версии в папке bin. Возможно, я немного переборщен, и перестройки может быть достаточно, но я не уверен, потому что библиотеки DLL находятся в папках Debug и Release ...