Qual è la differenza tra Build Solution, Rebuild Solution e Clean Solution in Visual Studio?
Quando è il momento opportuno per utilizzare ognuno di questi?
Qual è la differenza tra Build Solution, Rebuild Solution e Clean Solution in Visual Studio?
Quando è il momento opportuno per utilizzare ognuno di questi?
Risposte:
(I collegamenti sono alle opzioni della riga di comando devenv.exe , ma fanno lo stesso delle voci di menu.)
.gitignore
file decente . Ma secondo la risposta, Clean non fa sempre un lavoro particolarmente accurato nella mia esperienza.
Soluzione di compilazione: compila file di codice (DLL ed EXE) che vengono modificati.
Ricostruisci: elimina tutti i file compilati e li ricompila indipendentemente dal fatto che il codice sia cambiato o meno.
Soluzione pulita: elimina tutti i file compilati (file DLL e EXE).
Puoi vedere questo video di YouTube ( Visual Studio Build vs. Rebuild vs. Clean (domande sull'intervista in C # con risposte) ) in cui ho dimostrato le differenze e di seguito sono rappresentazioni visive che ti aiuteranno ad analizzare lo stesso in modo più dettagliato.
La differenza tra Rebuild vs. (Clean + Build), perché sembra esserci anche un po 'di confusione in questo:
La differenza sta nel modo in cui la sequenza di creazione e pulizia avviene per ogni progetto. Supponiamo che la tua soluzione abbia due progetti, "proj1" e "proj2". Se fai una ricostruzione ci vorrà “proj1”, pulisci (elimina) i file compilati per “proj1” e costruiscilo. Dopodiché ci vorrà il secondo progetto "proj2", pulire i file compilati per "proj2" e compilare "proj2".
Ma se fai un "clean" e costruisci ", prima eliminerà tutti i file compilati per" proj1 "e" proj2 "e poi costruirà prima" proj1 "seguito da" proj2 ".
Tratto da questo link :
Build significa compilare e collegare solo i file di origine che sono stati modificati dall'ultima build, mentre Rebuild significa compilare e collegare 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 non essere sincronizzate e la ricostruzione è necessaria per il successo della compilazione. In pratica, non hai mai bisogno di pulire.
Crea soluzione: crea tutti gli assembly che hanno modificato i file. Se un assembly non presenta modifiche, non verrà ricostruito. Inoltre non eliminerà alcun file intermedio.
Usato più comunemente.
Ricostruisci soluzione : ricostruisce tutti gli assiemi indipendentemente dalle modifiche ma lascia i file intermedi.
Utilizzato quando si nota che Visual Studio non ha incorporato le modifiche nell'assembly più recente. A volte Visual Studio commette errori.
Soluzione pulita : elimina tutti i file intermedi.
Utilizzato quando tutto il resto fallisce e devi ripulire tutto e ricominciare da capo.
Penso solo a Rebuild come eseguire prima il Clean seguito da Build. Forse mi sbaglio ... commenti?
file reference
anziché come, project reference
quindi l'ordine di costruzione del progetto non ha riconosciuto che doveva costruire un determinato progetto prima di un altro e l'assemblaggio non esisteva dove avrebbe dovuto durante costruire?
Crea soluzione: crea tutti gli assembly che hanno modificato i file. Se un assembly non presenta modifiche, non verrà ricostruito. Inoltre non eliminerà alcun file intermedio.
Ricostruisci la soluzione pulirà e quindi costruirà la soluzione da zero, ignorando tutto ciò che è stato fatto prima
Clean Solution eliminerà tutti i file compilati (cioè, EXE e DLL) dalla directory bin / obj.
Crea soluzione costruirà tutti i progetti nella soluzione che sono stati modificati. Ricostruisci costruisce tutti i progetti, qualunque sia, la soluzione pulita rimuove tutti i file temporanei assicurando che la build successiva sia completa.
Build Solution - Build solution costruirà la tua applicazione costruendo il numero di progetti che stanno cambiando file. E non cancella alcun file binario esistente e sostituisce semplicemente gli assiemi aggiornati nella cartella bin o obj.
Soluzione di ricostruzione: la soluzione di ricostruzione costruirà l'intera applicazione con la creazione di tutti i progetti disponibili nella soluzione con la pulizia. Prima di crearlo cancella tutti i file binari dalla cartella bin e obj.
Soluzione pulita: la soluzione pulita cancella tutti i file binari dalla cartella bin e obj.
Crea soluzione
Ciò eseguirà una build incrementale. In altre parole, creerà solo file di codice che sono stati modificati. Se non sono stati modificati, tali file non verranno toccati.
Ricostruisci la soluzione
Questo eliminerà tutti i file attualmente compilati (ad esempio, exe e DLL) e costruirà tutto da zero, indipendentemente dal fatto che ci sia o meno una modifica del codice nel file.
Menu soluzione pulita
Questo menu eliminerà tutti i file compilati (ovvero, EXE e DLL) dalla directory bin / obj.
Ricostruisci = Clean + Build
L'unica cosa importante che penso che la gente stia tralasciando è che Build and Clean sono entrambe attività che vengono eseguite in base alla conoscenza di Visual Studio del tuo Progetto / Soluzione. Vedo molte lamentele sul fatto che Clean non funzioni o lasci i file rimanenti o non sia affidabile, quando in realtà i motivi per cui dici che non è affidabile lo rendono in realtà più affidabile.
Clean rimuoverà solo i file (puliti) e / o le directory che Visual Studio o il compilatore stesso hanno effettivamente creato. Se copi i tuoi file o le strutture di file / cartelle create da uno strumento o una fonte esterni, Visual Studio non "sa che esistono" e quindi non dovrebbe toccarli.
Riesci a immaginare se l'operazione Clean abbia sostanzialmente eseguito un "del *. *"? Questo potrebbe essere catastrofico.
Build esegue una compilazione su progetti modificati o necessari.
Rebuild esegue una compilazione indipendentemente dalle modifiche o da ciò che è necessario.
Clean rimuove i file / le cartelle che ha creato in passato, ma inizialmente lascia tutto ciò che non aveva a che fare con.
Spero che questo elabori un po 'e aiuti.
Ho aa soluzione in bianco BuildRebuildClean
e tre libreria di classi Models
, Repository
, Notification
.
Uso Models
e Repository
nella Notification
libreria di classi.
Poi:
Models
progetto di libreria, allora BUILD solution. Nella schermata seguente, fare riferimento al timestamp della DLL, EXE viene aggiornato Models
e Notification
libreria.BuildRebuildClean
. Ciò che fa è eliminare tutti gli assembly, i file EXE e i file di riferimento da compilare nuovamente.Tutto quello che so è che un Clean non fa quello che faceva "make clean" - se pulisco una soluzione mi aspetterei che elimini obj e bin file / cartelle in modo tale che costruisca come fosse un nuovo checkout della fonte. Nella mia esperienza, anche se trovo spesso momenti in cui un Clean and Build o Rebuild produce ancora strani errori sul sorgente che è noto per la compilazione e ciò che è richiesto è una cancellazione manuale delle cartelle bin / obj, allora costruirà.
Crea soluzione crea solo i progetti che sono stati modificati nella soluzione e non ha effetto sugli assembly che non sono stati modificati,
ReBuild prima pulisce, tutti gli assembly dalla soluzione e quindi crea l'intera soluzione indipendentemente dalle modifiche apportate.
Pulisci, pulisce semplicemente la soluzione.
Questo riguarda solo l'opzione "Build Solution".
Mi sono completamente stufato dell'incapacità di Visual Studio di pulire davvero le soluzioni e ho scritto questo piccolo strumento che lo farà per te.
Chiudi prima la soluzione in VS e trascina la sua cartella da Esplora risorse in questa app o nella sua icona. A seconda dell'impostazione nella parte inferiore della finestra, può anche rimuovere elementi aggiuntivi, che ti aiuteranno se provi a caricare manualmente la tua soluzione su GitHub o a condividerla con qualcun altro:
In poche parole, inserirà tutte le cartelle "Debug", Intellisense e altre cache che possono essere ricostruite da VS nel Cestino per te.