Differenza tra Ricostruisci e Pulisci + Crea in Visual Studio

Qual è la differenza tra solo una ricostruzione e un Clean + Build in Visual Studio 2008? Clean + Build è diverso da quello di Clean + Rebuild ?

Ricostruisci = Pulisci + Costruisci

Dettagli notevoli:

  1. Per una soluzione multi-progetto, la “ricostruzione della soluzione” fa un “clean” seguito da una “build” per ciascun progetto (eventualmente in parallelo). Mentre una “soluzione pulita” seguita da una “build solution” prima ripulisce tutti i progetti (possibilmente in parallelo) e poi costruisce tutti i progetti (possibilmente in parallelo). Questa differenza nel sequenziamento degli eventi può diventare significativa quando entrano in gioco le dipendenze tra progetti.

  2. Tutte e tre le azioni corrispondono agli obiettivi di MSBuild. Quindi un progetto può scavalcare l’azione Ricostruisci per fare qualcosa di completamente diverso.

Earl ha ragione che il 99% delle volte Ricostruisce = Pulisci + Costruisci.

Ma non è garantito che siano uguali. Le 3 azioni (ricostruzione, costruzione, pulizia) rappresentano diversi obiettivi di MSBuild. Ognuno dei quali può essere sostituito da qualsiasi file di progetto per eseguire azioni personalizzate. Quindi è del tutto ansible che qualcuno possa sovrascrivere la ricostruzione per fare diverse azioni prima di iniziare una clean + build (o rimuoverle completamente).

Un caso molto angosciante, ma che lo indicava a causa delle discussioni sui commenti.

1 Per progetto, Ricostruisci progetto = (Pulisci progetto + Costruisci progetto).

2 Per soluzione, Ricostruisci Sln = progetto foreach (Pulisci progetto + Costruisci progetto!) = Pulisci Sln + Costruisci Sln

Diciamo che hai un Sln, contiene proj1, proj2 e proj3.

Ricostruisci Sln = (Pulisci proj1 -> Crea Proj1) + (Pulisci proj2 -> Costruisci Proj2) + (Pulisci proj3 -> Crea Proj3)

Clean Sln + Build Sln = (Clean proj1 + Clean proj2 + Clean proj3) -> (Build proj1 + Build proj2 + Build proj3)

-> significa seriale, + significa concomitante

quindi c’è una possibilità quando si inviano molte modifiche al codice mentre non si configurano correttamente le dipendenze del progetto, Ribuild Sln farebbe in modo che alcuni di voi si colleghino ad una lib stante perché non tutte le build sono garantite dopo la pulizia ( In questo caso, Clean Sln + Build Sln darà un errore di collegamento e te lo farà sapere immediatamente, invece di darti un’app con un comportamento strano)

Da http://www.cs.tufts.edu/r/graphics/resources/vs_getting_started/vs_getting_started.htm , (cercalo solo su google):

Build significa compilare e colbind solo i file di origine che sono stati modificati dall’ultima generazione, mentre Ricostruisci significa compilare e colbind tutti i file di origine indipendentemente dal fatto che siano stati modificati o meno. Costruire è la cosa normale da fare ed è più veloce. A volte le versioni dei componenti di destinazione del progetto possono uscire dalla sincronizzazione e la ricostruzione è necessaria per il successo della compilazione. In pratica, non hai mai bisogno di pulire.

Build or Rebuild Solution crea o ricostruisce tutti i progetti nella soluzione, mentre Build o Rebuild crea o ricostruisce il progetto StartUp, “ciao” nella schermata sopra. Per impostare il progetto di avvio, fare clic con il tasto destro del mouse sul nome del progetto desiderato nella scheda Esplora soluzioni e selezionare Imposta come progetto di avvio. Il nome del progetto ora appare in grassetto. Poiché le soluzioni per i compiti a casa hanno in genere un solo progetto, la soluzione di ricostruzione o ricostruzione è in effetti uguale a quella di creazione o ricostruzione.

Compila solo compila il file sorgente attualmente in fase di modifica. Utile per controllare rapidamente gli errori quando il resto dei file di origine si trova in uno stato incompleto che impedirebbe una compilazione di successo dell’intero progetto. Ctrl-F7 è il tasto di scelta rapida per Compilare.

Da questo post del blog che l’autore ha collegato come commento a questa domanda :

In realtà No !!! non sono uguali.

La differenza sta nella sequenza in cui i progetti si puliscono e si costruiscono. Diciamo che abbiamo due progetti in una soluzione. Clean and then build eseguirà la pulizia di entrambi i progetti e quindi la build verrà eseguita singolarmente mentre sul progetto di ricostruzione A verrà visualizzato, pulito e quindi compilato dopo che il progetto B sarà pulito e quindi compilato e così via.