Różnica między Rebuild a Clean + Build w Visual Studio

Jaka jest różnica między zwykłym Przebudowaniem a czyszczeniem + zbudować w Visual Studio 2008? Is Clean + Zbuduj inaczej, a potem Wyczyść + odbudować ?

Author: Guilherme Fidelis, 2009-08-08

5 answers

Rebuild = Clean + Build

Ważne szczegóły:

  1. W przypadku rozwiązania wieloprojektowego "rebuild solution" wykonuje "clean", a następnie "build" dla każdego projektu (ewentualnie równolegle). Podczas gdy "czyste rozwiązanie", a następnie "rozwiązanie budowania", 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 sekwencjonowaniu zdarzeń może stać się znacząca, gdy dojdzie do zależności między projektami Graj.

  2. Wszystkie trzy działania odpowiadają celom MSBuild. Więc projekt może zastąpić akcję Rebuild, aby zrobić coś zupełnie innego.

 281
Author: earl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-08 12:20:18

Earl ma rację, że 99% czasu Rebuild = Clean + Build.

Ale nie mają gwarancji, że będą takie same. 3 akcje (rebuild, build, clean) reprezentują różne cele MSBuild. Każdy z nich może być nadpisany przez dowolny plik projektu, aby wykonać niestandardowe akcje. Jest wiÄ ™ c caĹ 'kowicie moĺľliwe, aby ktoĹ "przesĹ' adziĺ 'rebuild aby wykonaÄ ‡ kilka akcji przed rozpoczÄ ™ ciem budowy (lub usuniÄ ™ cia ich caĹ' kowicie).

Bardzo sprawa narożna, ale z uwagi na komentarz dyskusje.

 157
Author: JaredPar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-17 03:58:57

1 na projekt, Rebuild project = (Clean project + Build project).

2 za rozwiązanie, Rebuild Sln = foreach project (Clean project + Build project) != Clean Sln + Build Sln

Powiedzmy, że masz Sln, zawiera proj1, proj2 i proj3.

Rebuild 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, + oznacza współbieżny

Więc jest szansa, że gdy przesyłasz wiele zmian w kodzie, gdy nie skonfigurujesz poprawnie zależności projektu, Przebudowa Sln spowodowałaby, że niektórzy z was proj link do starej lib, ponieważ wszystkie buildy nie są gwarantowane po wszystkich czyszczeniu.(W tym przypadku Clean Sln + Build Sln spowoduje błąd łącza i natychmiast poinformuje Cię o tym, zamiast dawać aplikację o dziwnym zachowaniu)

 46
Author: Trout.Z,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-17 03:57:35

Z http://www.cs.tufts.edu/r/graphics/resources/vs_getting_started/vs_getting_started.htm, (wystarczy googlować):

Build oznacza kompilowanie i łączenie tylko plików źródłowych, które zmieniły się od ostatniego kompilacji, podczas gdy Rebuild oznacza kompilowanie i łączenie wszystkich plików źródłowych, niezależnie od tego, czy się zmieniły, czy nie. Budowanie jest normalną rzeczą do zrobienia i jest szybsze. Czasami wersje komponentów docelowych projektu mogą się zsynchronizować i odbudować jest konieczne, aby zbudować sukcesy W praktyce nigdy nie trzeba czyścić.

Build or Rebuild Solution buduje lub przebudowuje wszystkie projekty w Twoim rozwiązaniu, podczas gdy Build or Rebuild buduje lub przebudowuje projekt startowy, "hello" na zrzucie ekranu powyżej. Aby ustawić projekt startowy, kliknij prawym przyciskiem myszy żądaną nazwę projektu na karcie Eksplorator rozwiązań i wybierz Ustaw jako projekt startowy. Nazwa projektu jest teraz pogrubiona. Ponieważ rozwiązania do zadań domowych zazwyczaj mają tylko jeden projekt, Zbuduj lub Przebuduj rozwiązanie jest skutecznie taki sam jak budować lub odbudować .

Compile 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 stanie niekompletnym, co uniemożliwiłoby pomyślne zbudowanie całego projektu. Ctrl-F7 jest klawiszem skrótu do kompilacji.

 12
Author: Eduardo Mello,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-21 13:10:39

From this blog post which autor linked as a comment on this question :

Właściwie Nie!!! nie są równi.

Różnica polega na sekwencji projektów get clean I build. Niech powiedzmy, że mamy dwa projekty w rozwiązaniu. Wyczyścić, a następnie zbudować będzie wykonaj czyste do obu projektów, a następnie zbuduj nastąpi indywidualnie podczas przebudowy projektu a dostanie i wyczyści, a następnie zbuduje po ten projekt B będzie czysty, a następnie zbuduje i i tak dalej.

 3
Author: Prageeth godage,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:18