web-dev-qa-db-fra.com

Différence entre la solution de génération, la solution de reconstruction et la solution propre dans Visual Studio?

Quelle est la différence entre la solution de génération, la solution de reconstruction et la solution propre dans Visual Studio?

Quel est le bon moment pour utiliser chacun d'entre eux?

963
Fawa
  • Build solution effectuera une construction incrémentale: si ce n’est pas le cas pense qu’il doit reconstruire un projet, ce ne sera pas le cas. Il peut également utiliser des éléments du projet partiellement construits s’ils n’ont pas changé (je ne sais pas dans quelle mesure cela va)
  • Rebuild solution va nettoyer puis construire la solution à partir de zéro, ignorant tout ce qui a été fait auparavant. La différence entre cela et "Nettoyer, suivi de Construire" est que Rebuild nettoie, puis construit, chaque projet, un par un, plutôt que de tout nettoyer, puis de tout construire.
  • Nettoyer la solution supprimera les artefacts de la construction précédente. S'il existe d'autres fichiers dans les répertoires cible de la construction (bin et obj), ils ne peuvent pas être supprimés, mais les artefacts de construction le sont. J'ai vu des comportements variés - supprimant parfois assez complètement et parfois pas - mais je vais donner à VS le bénéfice du doute pour le moment :)

(Les liens renvoient aux commutateurs de ligne de commande devenv.exe, mais ils ont la même fonction que les éléments de menu.)

802
Jon Skeet

Solution de compilation: Compile les fichiers de code (DLL et EXE) qui sont modifiés.

Reconstruire: Supprime tous les fichiers compilés et les compile à nouveau, que le code ait changé ou non.

Solution propre: Supprime tous les fichiers compilés (fichiers DLL et EXE).

Vous pouvez voir cette vidéo YouTube (Visual Studio Créer, Rebuild ou Nettoyer (questions d’interview en C # avec réponses)) où j’ai montré les différences et où, ci-dessous, des représentations visuelles vous aideront à même plus en détail.

Build vs Rebuild

La différence entre Rebuild et (Clean + Build), car il semble y avoir une certaine confusion autour de ceci:

La différence réside dans la façon dont la séquence de construction et de nettoyage se déroule pour chaque projet. Supposons que votre solution comporte deux projets, «proj1» et «proj2». Si vous effectuez une reconstruction, il faudra “proj1”, nettoyez (supprimez) les fichiers compilés pour “proj1” et construisez-le. Après cela, il faudra prendre le deuxième projet “proj2”, nettoyer les fichiers compilés pour “proj2” et compiler “proj2”.

Mais si vous faites un “nettoyage” et une construction ”, il supprimera d’abord tous les fichiers compilés pour“ proj1 ”et“ proj2 ”, puis créera“ proj1 ”suivi en premier de“ proj2 ”.

Rebuild Vs Clean

392
Shivprasad Koirala

Tiré de ce lien :

Construire signifie compiler et lier uniquement les fichiers source qui ont changé depuis la dernière construction, lors de la reconstruction signifie compiler et lier toutes les sources fichiers indépendamment du fait qu'ils changé ou pas. La construction est la normale chose à faire et est plus rapide. Parfois les versions du projet cible les composants peuvent ne plus être synchronisés et la reconstruction est nécessaire pour faire la construction réussi. En pratique, vous n’avez jamais besoin de nettoyer.

137
Matthew Jones

Build Solution - Construit tous les assemblys qui ont changé de fichier. Si une assemblée n'a aucun changement, elle ne sera pas reconstruite. Aussi ne supprimera aucun fichier intermédiaire.

Utilisé le plus souvent.

Rebuild Solution - Reconstruit tous les assemblys indépendamment des modifications, mais laisse les fichiers intermédiaires.

Utilisé lorsque vous remarquez que Visual Studio n'a pas incorporé vos modifications dans le dernier assemblage. Parfois, Visual Studio commet des erreurs.

Clean Solution - Supprimer tous les fichiers intermédiaires et reconstruire tous les assemblages indépendamment des modifications

Utilisé lorsque tout le reste échoue et que vous devez tout nettoyer et recommencer à zéro.

29
Justin Niessner

Build Solution - Construit tous les assemblys qui ont changé de fichier. Si une assemblée n’a aucun changement, elle ne sera pas reconstruite. Aussi ne supprimera aucun fichier intermédiaire.

Reconstruire la solution nettoiera puis construira la solution à partir de zéro, ignorant tout ce qui a été fait auparavant

Nettoyer la solution supprimera tous les fichiers compilés (c'est-à-dire les fichiers EXE et DLL) du répertoire bin/obj.

13
Guilherme Fidelis

Je pense juste à Rebuild comme effectuant le nettoyage en premier suivi de la construction. Peut-être que je me trompe ... commentaires?

12
Ken Richards

Solution de construction - La solution de construction construira votre application en générant le nombre de projets dont les fichiers sont modifiés. Et cela ne supprime pas les fichiers binaires existants et remplace simplement les assemblages mis à jour dans le dossier bin ou obj.

Solution de reconstruction - La solution de reconstruction construira l’ensemble de votre application en construisant tous les projets disponibles dans votre solution en les nettoyant. Avant de le construire, efface tous les fichiers binaires des dossiers bin et obj.

Nettoyer la solution - Nettoyer la solution est juste efface tous les fichiers binaires du dossier bin et obj.

7
Sabaridass R

Build solution construira tous les projets de la solution qui ont changé. La reconstruction reconstruit tous les projets à tout moment, une solution propre supprime tous les fichiers temporaires, assurant ainsi la fin de la prochaine génération.

6
Steven Evers

La principale chose que les gens oublient, c’est que Build and Clean sont deux tâches qui sont exécutées en fonction de la connaissance de votre projet/solution par Visual Studio. Je vois beaucoup de plaintes pour dire que Clean ne fonctionne pas, ne laisse pas de fichiers restants ou n'est pas digne de confiance, alors qu'en fait, les raisons pour lesquelles vous dites qu'il n'est pas digne de confiance le rendent plus digne de confiance.

Nettoyer supprimera uniquement les fichiers (propres) et/ou les répertoires créés par Visual Studio ou le compilateur. Si vous copiez vos propres fichiers ou que les structures de fichiers/dossiers sont créées à partir d'un outil ou d'une source externe, Visual Studio ne "sait pas qu'ils existent" et ne doit donc pas les toucher.

Pouvez-vous imaginer si l'opération de nettoyage effectuait essentiellement un "del *. *"? Cela pourrait être catastrophique.

Build effectue une compilation sur des projets modifiés ou nécessaires.

Rebuild effectue une compilation indépendamment du changement ou de ce qui est nécessaire.

Nettoyer supprime les fichiers/dossiers qu'il a créés dans le passé, mais laisse tout ce avec quoi il n'avait rien à voir, au départ.

J'espère que cela développe un peu et aide.

3
Chase

Solution de construction

Cela effectuera une construction incrémentielle. En d'autres termes, il ne créera que les fichiers de code modifiés. S'ils n'ont pas changé, ces fichiers ne seront pas touchés.

Solution de reconstruction

Cela supprimera tous les fichiers actuellement compilés (c'est-à-dire exe et DLL) et créera tout à partir de zéro, que le code ait été modifié ou non.

Menu de solution propre

Ce menu supprimera tous les fichiers compilés (c'est-à-dire les fichiers EXE et DLL) du répertoire bin/obj.

Rebuild = Clean + Build

3
Sajisha

Build solution construit uniquement les projets qui ont changé dans la solution et n'affecte pas les assemblys qui n'ont pas changé,

ReBuild nettoie d’abord tous les assemblys de la solution, puis construit la solution entière, quelles que soient les modifications apportées.

Nettoyer, nettoie simplement la solution.

1
yashashwi

Tout ce que je sais, c'est que Clean ne fait pas ce que "make clean" faisait - si je nettoyais une solution, je m'attendrais à ce qu'elle supprime obj et les fichiers/dossiers bin de sorte qu'il se construit comme si c'était une nouvelle extraction de la source. Cependant, dans mon expérience, je trouve souvent des moments où Clean and Build ou Rebuild génère toujours d’étranges erreurs sur le code source qui est connu pour compiler et où il est nécessaire de supprimer manuellement les dossiers bin/obj. construire.

0
steve