2010-11-15 11 views
10

Wystarczy, aby uczynić go bardziej jasne dla mnie, chciałbym zapytać wy prawidłowy stan (s), aby mieć swój projektKiedy powinieneś preferować ReBuild zamiast Build?

lub rozwiązanie Rebuildzamiastbuild w Visual Studio?

Jeśli zmienię to na nowo: Dlaczego stwardnienie rozsiane musi utworzyć opcję "Odbuduj WSZYSTKIE" w Visual Studio? Jaki był ich główny motyw, aby to zrobić?

Dzięki!

Odpowiedz

7

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):

  1. pliki z bieżącego projektu - wskazany przez {CandidateAssemblyFiles}
  2. $(ReferencePath) - właściwości toru odniesienia, który pochodzi z pliku .USER.
  3. Ś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 ...

+0

Innymi słowy, 'Rebuild' =' Clean' + ' Kompilacja ' – abatishchev

+0

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. –

+1

W twoim Microsoft.Common.Targets możesz to zobaczyć dla projektu Rebuild = BeforeRebuild; Czysty; $ (_ ProjectDefaultTargets); AfterRebuild; –

1

Czasami coś idzie nie tak i kompilacja po prostu nie działa.

To się dzieje np. gdy nie aktualizuję prawidłowo bibliotek zależnych, które następnie nie są poprawnie kopiowane do ścieżek bin kompilacji. Istnieją inne przykłady, które nie mają na uwadze.

Właśnie wtedy używam przebudowy.

Powiązane problemy