DRY: Rebuild = Clean + Build dla każdego projektu po kolei.
Kompilacja nie usuwa poprzednich wyników kompilacji. Przebudowanie usuwa je i buduje ponownie (jeden projekt na raz, jeśli jesteś w rozwiązaniu: usuń proj1 \ bin \ Debuguj, kompiluj proj1, usuń proj2 \ bin \ Debug ...).
Głównym przypadkiem, gdy wykonuję przebudowę (lub czystą kompilację), jest sytuacja, w której muszę zaktualizować trzecie zależności od rozwiązania. Zobaczmy następujące drzewo folderu:
SOLUTION
|__Dependencies
|__PROJ_1
|__bin
|__obj
|__(code)
|__PROJ_2
|__bin
|__obj
|__(code)
Jeśli zmienię moje bibliotek DLL w zależności i nie zrobić odbudować, VS (i msbuild) będzie nadal korzystać z poprzedniej wersji dll, który jest w PROJ_N \ bin \ Debug (lub bin \ Release), ponieważ zlecenia Zależność przeglądowej (patrz http://www.beefycode.com/post/Resolving-Binary-References-in-MSBuild.aspx):
- pliki z bieżącego projektu - wskazany przez
{CandidateAssemblyFiles}
$(ReferencePath)
- właściwości toru odniesienia, który pochodzi z pliku .USER
.
- Ścieżka do wskazanego elementu, wskazana przez
{HintPathFromItem}
.
...
dll w folderze bin idzie w pierwszym przypadku odnośników, dll w folderze Zależności jest w drugim przypadku ...
W takim razie chciałbym zrobić to czyste (Debuguj), wyczyść (Release), a następnie kompilację, aby wyeliminować wszystkie poprzednie wersje w folderze bin. Być może trochę przesadzone i odbudowanie może być wystarczające, ale nie jestem pewien, ponieważ biblioteki DLL znajdują się w folderach Debug i Release ...
Innymi słowy, 'Rebuild' =' Clean' + ' Kompilacja ' – abatishchev
Przez większość czasu i dla jednego projektu tak. Zobacz http://stackoverflow.com/questions/1247457/difference-between-rebuild-and-clean-build-in-visual-studio-2008. –
W twoim Microsoft.Common.Targets możesz to zobaczyć dla projektu Rebuild = BeforeRebuild; Czysty; $ (_ ProjectDefaultTargets); AfterRebuild; –