web-dev-qa-db-fra.com

Différence entre Rebuild et Clean + Build dans Visual Studio

Quelle est la différence entre juste un Rebuild et faire un nettoyage + Build dans Visual Studio 2008? Est Propre + Construire différent alors faire Nettoyer + Reconstruire ?

290
Jim McKeeth

Reconstruire = Nettoyer + Construire (généralement)

Détails notables:

  1. Pour une solution multi-projets, "reconstruire la solution" effectue un "nettoyage" suivi d'un "build" pour chaque projet (éventuellement en parallèle). Alors qu’une "solution propre" suivie d’une "solution de construction" nettoie d’abord tous les projets (éventuellement en parallèle), puis construit tous les projets (éventuellement en parallèle). Cette différence dans la séquence des événements peut devenir importante lorsque des dépendances entre projets entrent en jeu.

  2. Les trois actions correspondent aux cibles MSBuild. Ainsi, un projet peut remplacer l’action de reconstruction pour faire quelque chose de complètement différent.

295
earl

Earl a raison de dire que 99% du temps, Rebuild = Clean + Build.

Mais ils ne sont pas garantis d'être les mêmes. Les 3 actions (reconstruire, construire, nettoyer) représentent différentes cibles MSBuild. Chacun de ces fichiers peut être remplacé par un fichier de projet pour effectuer des actions personnalisées. Il est donc tout à fait possible que quelqu'un redéfinisse la reconstruction pour effectuer plusieurs actions avant de lancer un build + propre (ou de les supprimer entièrement).

Très un cas d'angle, mais en le soulignant en raison de commenter les discussions.

160
JaredPar

1 Par projet, Reconstruire le projet = (Projet propre + Projet généré).

2 par solution, Rebuild Sln = projet foreach (projet Clean + projet Build)! = Clean Sln + Build Sln

Disons que vous avez un Sln, contient proj1, proj2 et proj3.

Reconstruire Sln = (Nettoyer proj1 -> Construire Proj1) + (Nettoyer proj2 -> Construire Proj2) + (Nettoyer proj3 -> Construire Proj3)

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

-> signifie série, + signifie simultané

il est donc possible que vous soumettiez de nombreuses modifications de code sans configurer correctement les dépendances du projet. Rebuild Sln provoquerait le lien de certains d'entre vous vers une bibliothèque obsolète car toutes les versions ne sont pas garanties après tous les nettoyages. Dans ce cas, Clean Sln + Build Sln générera une erreur de lien et vous le fera savoir immédiatement, au lieu de vous donner une application avec un comportement étrange)

53
Trout.Z

De http://www.cs.tufts.edu/r/graphics/resources/vs_getting_started/vs_getting_started.htm , (il suffit de le googler):

Construire signifie compiler et lier uniquement les fichiers source qui ont changé depuis la dernière génération, tandis que reconstruire signifie compiler et lier tous les fichiers source, qu'ils aient été modifiés ou non. Construire est la chose normale à faire et est plus rapide. Parfois, les versions des composants cibles du projet peuvent ne plus être synchronisées et une reconstruction est nécessaire pour que la construction aboutisse. En pratique, vous n'avez jamais besoin de nettoyer.

Générer ou reconstruire la solution génère ou reconstruit tous les projets de votre solution, tandis que Construire ou reconstruire construit ou reconstruit le projet de démarrage, "Bonjour" dans la capture d'écran ci-dessus. Pour définir le projet de démarrage, cliquez avec le bouton droit sur le nom du projet souhaité dans l'onglet Explorateur de solutions et sélectionnez Définir comme projet de démarrage. Le nom du projet apparaît maintenant en gras. Étant donné que les solutions de travail à domicile ne comportent généralement qu'un seul projet, la solution Construire ou reconstruire est en réalité la même que Construire ou Reconstruire.

Compiler ne fait que compiler le fichier source en cours de modification. Utile pour vérifier rapidement les erreurs lorsque le reste de vos fichiers source est dans un état incomplet, ce qui empêcherait la création de l'ensemble du projet. Ctrl-F7 est la touche de raccourci pour Compiler.

11
Eduardo Mello

De cet article de blog auquel l'auteur a associé le lien n commentaire sur cette question :

En fait non!!! ils ne sont pas égaux.

La différence réside dans la séquence des projets à nettoyer et à construire. Disons que nous avons deux projets dans une solution. Nettoyer, puis construire, effectuera un nettoyage des deux projets, puis la construction se produira de manière individuelle lors de la reconstruction du projet.

4
Prageeth godage