Jaka jest różnica między przebudową a wykonaniem kompilacji Clean + w Visual Studio 2008? Czy Clean + Build różni się od Clean + Rebuild ?
visual-studio
visual-studio-2008
build
rebuild
Jim McKeeth
źródło
źródło
Odpowiedzi:
Przebuduj = Clean + Build (zwykle)
Ważne szczegóły:
W przypadku rozwiązania obejmującego wiele projektów „przebuduj rozwiązanie” wykonuje „czyste”, a następnie „kompilację” dla każdego projektu (możliwie równolegle). Natomiast „czyste rozwiązanie”, a następnie „rozwiązanie kompilacji” najpierw czyści wszystkie projekty (być może równolegle), a następnie buduje wszystkie projekty (być może równolegle). Ta różnica w sekwencji zdarzeń może stać się znacząca, gdy pojawią się zależności między projektami.
Wszystkie trzy działania odpowiadają celom MSBuild. Tak więc projekt może zastąpić akcję Przebuduj, aby zrobić coś zupełnie innego.
źródło
Earl ma rację, że 99% czasu Rebuild = Clean + Build.
Ale nie gwarantuje się, że będą takie same. 3 akcje (przebuduj, skompiluj, wyczyść) reprezentują różne cele MSBuild. Każdy z nich można zastąpić dowolnym plikiem projektu w celu wykonania niestandardowych działań. Jest więc całkowicie możliwe, że ktoś zastąpi przebudowę, wykonując kilka akcji przed zainicjowaniem czystej + kompilacji (lub całkowicie ją usuwając).
Bardzo ważna sprawa, ale wskazanie jej z powodu dyskusji na temat komentarzy.
źródło
Zdefiniujmy domyślną implementację Rebuild pod względem domyślnych implementacji Clean i Build:
Na projekt: Przebuduj projekt = Wyczyść projekt + Zbuduj projekt.
Dla rozwiązania: Przebuduj sln = foreach project in sln (Clean project + Build project).
Zauważ, że z powodu różnic w kolejności wykonywania, Przebuduj sln nie jest tym samym, co (Wyczyść sln + kompilacja sln) = (foreach projekt w sln Wyczyść projekt) + (foreach projekt w sln Kompilacja projektu). Ponadto to „foreach” może być wykonywane jednocześnie, więc różne zadania mogą być uruchamiane jednocześnie w dwóch scenariuszach.
Załóżmy, że masz SLN, który zawiera proj1, proj2 i proj3.
Przebuduj sln = (Clean proj1 + Build proj1) & (Clean proj2 + Build proj2) & (Clean proj3 + Build proj3)
Clean Sln + Build Sln = (Clean proj1 & Clean proj2 & Clean proj3) + (Build proj1 & Build proj2 & Build proj3)
+ oznacza szeregowy i oznacza równoczesny.
Jeśli więc zależności projektu nie zostaną poprawnie skonfigurowane, istnieje szansa, że po uruchomieniu Przebuduj sln, niektóre z twoich projektów zawierają linki do przestarzałej biblioteki lib. Jest tak, ponieważ nie można zagwarantować, że wszystkie operacje czyszczenia zostaną zakończone przed rozpoczęciem pierwszej kompilacji. Jeśli wykonasz Clean sln + Build sln, podadzą ci błąd łącza i poinformują cię o tym natychmiast, zamiast dać ci aplikację o dziwnym zachowaniu.
źródło
From http://www.cs.tufts.edu/r/graphics/resources/vs_getting_started/vs_getting_started.htm , (po prostu googlował):
Kompilacja oznacza kompilację i dowiązanie tylko plików źródłowych, które zmieniły się od czasu ostatniej kompilacji, natomiast Rebuild oznacza kompilację i dowiązanie wszystkich plików źródłowych, niezależnie od tego, czy uległy one zmianie. Kompilacja jest normalną rzeczą do zrobienia i jest szybsza. Czasami wersje komponentów docelowych projektu mogą się nie zsynchronizować i konieczna jest przebudowa, aby kompilacja zakończyła się powodzeniem. W praktyce nigdy nie trzeba czyścić.
Build lub Rebuild Solution buduje lub przebudowuje wszystkie projekty w twoim rozwiązaniu, podczas gdy Build lub Rebuild buduje lub przebudowuje projekt StartUp, „cześć” na zrzucie ekranu powyżej. Aby ustawić projekt StartUp, kliknij prawym przyciskiem myszy żądaną nazwę projektu na karcie Solution Explorer i wybierz opcję Ustaw jako projekt StartUp. Nazwa projektu jest teraz pogrubiona. Ponieważ rozwiązania zadań domowych mają zwykle tylko jeden projekt, Kompilacja lub przebudowa jest w rzeczywistości taka sama jak kompilacja lub przebudowa.
Kompilacja po prostu kompiluje aktualnie edytowany plik źródłowy. Przydatne do szybkiego sprawdzania błędów, gdy reszta plików źródłowych jest w niepełnym stanie, co uniemożliwiłoby pomyślną kompilację całego projektu. Ctrl-F7 to klawisz skrótu do kompilacji.
źródło
Z tego postu na blogu, który autor umieścił jako komentarz do tego pytania :
źródło