1274 votes

Différence entre Build Solution, Rebuild Solution et Clean Solution dans Visual Studio?

Quelle est la différence entre Build Solution, Rebuild Solution et Clean Solution dans Visual Studio?

Quand est-il approprié d'utiliser chacune de ces commandes?

5 votes

3 votes

Est-ce que reconstruire est la même chose que nettoyer puis construire?

2 votes

@ColonelPanic oui

1060voto

Jon Skeet Points 692016
  • Construire la solution effectuera une construction progressive : s'il ne pense pas avoir besoin de reconstruire un projet, il ne le fera pas. Il peut également utiliser des parties partiellement construites du projet s'ils n'ont pas changé (je ne sais pas jusqu'où il va dans ce cas)
  • Reconstruire la solution nettoiera puis construira la solution à partir de zéro, en ignorant tout ce qui a été fait avant. La différence entre cela et "Nettoyer, suivi de Construire" est que Reconstruire nettoiera puis construira chaque projet, un par un, plutôt que de tout nettoyer puis de tout construire.
  • Nettoyer la solution supprimera les artefacts de construction de la construction précédente. Si d'autres fichiers se trouvent dans les répertoires cibles de construction (bin et obj), ils peuvent ne pas être supprimés, mais les artefacts de construction réels le seront. J'ai vu des comportements différents pour cela - parfois une suppression assez approfondie et parfois non - mais je vais donner le bénéfice du doute à VS pour le moment :)

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

0 votes

@Jon - un Clean efface-t-il les dossiers bin et obj à votre avis ?

3 votes

@womp : Pas dans le projet que je viens de regarder. Il a toujours toutes les assemblées là...

2 votes

@Jon - bizarre. Je ne me souviens pas qu'un nettoyage n'ait jamais nettoyé ces répertoires. Je le fais en ce moment et il efface tous les fichiers .dll et .pdb. En revanche, il laisse tranquilles mes fichiers ReSharper.

514voto

Shivprasad Koirala Points 1327

Construire la solution : Compile les fichiers de code (DLL et EXE) qui ont été modifiés.

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

Nettoyer la solution : Supprime tous les fichiers compilés (fichier DLL et EXE).

Vous pouvez voir cette vidéo YouTube (Visual Studio Build vs Rebuild vs Clean (questions d'entretien en C# avec réponses)) où j'ai démontré les différences et ci-dessous se trouvent des représentations visuelles qui vous aideront à analyser plus en détail la même chose.

Build vs Rebuild

La différence entre Rebuild vs (Clean + Build), car il semble qu'il y ait également une certaine confusion à ce sujet :

La différence réside dans le déroulement de la séquence de build et de nettoyage pour chaque projet. Disons que votre solution a deux projets, "proj1" et "proj2". Si vous effectuez un rebuild, il prendra "proj1", nettoiera (supprimera) les fichiers compilés pour "proj1" et le compilera. Ensuite, il prendra le deuxième projet "proj2", nettoiera les fichiers compilés pour "proj2" et le compilera.

Mais si vous faites un "nettoyer" et "construire", il supprimera d'abord tous les fichiers compilés pour "proj1" et "proj2", puis il construira "proj1" en premier suivi de "proj2".

Rebuild Vs Clean

32 votes

Merci d'avoir expliqué pourquoi la reconstruction ne fonctionne pas toujours et j'ai souvent besoin de nettoyer avant de construire.

4 votes

Oui, la description et le deuxième schéma étaient très utiles et clairs. Si vous pouviez corriger le schéma de flux "illégal", afin que Oui ne mène qu'à un seul endroit, cela serait utile. Je ne comprends vraiment pas ce que celui-ci essaie de dire, surtout avec "Construire TOUT" sous "Reconstruire".

0 votes

@JonCoombs Oui, je ne pense pas que le premier diagramme de flux ait capturé exactement ce qu'il a dit dans la vidéo. Je pense que l'image que j'ai insérée est ce dont Shivprasad visait.

153voto

Matthew Jones Points 13864

Pris à partir de ce lien:

Compiler signifie compiler et lier uniquement les fichiers source qui ont changé depuis la dernière compilation, tandis que Reconstruire signifie compiler et lier tous les fichiers source indépendamment de s'ils ont changé ou non. Compiler est la chose normale à faire et c'est plus rapide. Parfois les versions des composants cibles du projet peuvent devenir désynchronisées et une reconstruction est nécessaire pour que la compilation soit réussie. En pratique, vous n'avez jamais besoin de Nettoyer.

2 votes

Lien? Je pensais que l'idée d'une DLL, alias Dynamic Link Library, était de lier à l'exécution?

18 votes

"En pratique, vous n'avez jamais besoin de Nettoyer" <-- Je ne crois pas en ça.

3 votes

Piers7 pouvez-vous alors fournir une raison pour laquelle vous auriez besoin de nettoyer vs reconstruire?

56voto

Justin Niessner Points 144953

Construire la solution - Construit toutes les assemblies qui ont des fichiers modifiés. Si une assembly n'a pas de modifications, elle ne sera pas reconstruite. De plus, aucun fichier intermédiaire ne sera supprimé.

Utilisé le plus souvent.

Reconstruire la solution - Reconstruit toutes les assemblies indépendamment des modifications mais laisse les fichiers intermédiaires.

Utilisé lorsque vous remarquez que Visual Studio n'a pas pris en compte vos modifications dans la dernière assembly. Parfois, Visual Studio fait des erreurs.

Nettoyer la solution - Supprime tous les fichiers intermédiaires.

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

0 votes

Quels sont les fichiers intermédiaires ? Voulez-vous dire les fichiers Dll, pdb et xml ?

0 votes

Utilisé lorsque vous remarquez que Visual Studio n'a pas incorporé vos modifications dans la dernière assembly. Parfois, Visual Studio fait des erreurs. - c'est la raison pour laquelle je vote pour cette réponse car aucune autre réponse ne semble en parler

20voto

Ken Richards Points 886

Je pense simplement à Rebuild comme effectuant d'abord le Clean suivi du Build.

0 votes

Cette réponse n'a reçu aucun vote positif (jusqu'à maintenant) et d'après la documentation (voir le lien dans la réponse de Jon), c'est absolument correct.

2 votes

Je ne pense pas que cela le fasse. J'ai une situation où faire une solution propre, suivie par la construction de la solution, fonctionne, mais reconstruire la solution échoue. C'est sur une solution fraîchement créée avec 2 projets (l'un étant dépendant de l'autre).

0 votes

@Cthutu Voir la réponse de Shivprasad pour le détail qui fait la différence ici. Rebuild nettoie puis construit chaque projet individuellement, tandis que l'exécution de "Clean" nettoie d'abord tout à la fois, puis "Build" construit tout à la fois. J'ai rencontré des cas où ce changement dans l'ordre de nettoyage/construction fait la différence entre compiler et ne pas compiler également.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X