2009-08-07 8 views
259

Quelle est la différence entre juste un Reconstruire et de faire un propre + Construire dans Visual Studio 2008? Est Propre + Construire différente puis en faisant Nettoyer + Reconstruire?Différence entre Reconstruire et Clean + Créer dans Visual Studio

+4

[Voici un poste agréable avec détails] (http://conceptf1.blogspot.com/2013/11/visual-studio-clean-build-and-rebuild-solution.html) –

Répondre

268

Reconstruire = Clean + Construire

détails notables:

  1. Pour une solution multi-projet, "reconstruire solution" fait un "propre" suivi d'un "construire" pour chaque projet (peut-être en parallèle). Alors qu'une "solution propre" suivie d'une "solution de construction" nettoie d'abord tous les projets (éventuellement en parallèle) et ensuite construit tous les projets (éventuellement en parallèle). Cette différence de séquençage des événements peut devenir significative lorsque des dépendances inter-projets entrent en jeu.

  2. Les trois actions correspondent aux cibles MSBuild. Un projet peut donc remplacer l'action Reconstruire pour faire quelque chose de complètement différent.

+1

Donc, vous dites que * Rebuild * est ** exactement ** identique à un * Clean * suivi d'un * Build *? C'est un peu ce que je pensais, mais je n'étais pas sûr. –

+40

Sauf Reconstruire nettoie et reconstruit chaque projet un par un. Clean + Build les nettoie tous, puis les construit tous. Fait la différence surtout si vous cliquez par accident :) – Eugene

+22

Sauf pour le manque de garantie qu'ils sont les mêmes. Voir la réponse de JaredPar ci-dessous qui, combinée avec Earl est l'image entière. Parce que Reconstruire chaque projet à son tour, vous pouvez avoir un "casse" lorsque vos informations de dépendance sont foiré et vous obtenez un projet de construction hors de B en utilisant l'ancien projet A puis reconstruire A, puis reconstruire C. etc Une solution complète Clean suivie d'une solution complète va capturer cette situation alors qu'une reconstruction ne le fera pas. Donc, plus vous êtes paranoïaque et fatigué, plus vous devriez privilégier Clean puis Build. –

154

Earl est correct que 99% du temps Reconstruire = Nettoyer + Construire.

Mais ils ne sont pas garantis d'être identiques. Les 3 actions (rebuild, build, clean) représentent différentes cibles MSBuild. Chacun d'entre eux peut être remplacé par n'importe quel fichier de projet pour effectuer des actions personnalisées. Il est donc tout à fait possible pour quelqu'un de surcharger rebuild de faire plusieurs actions avant d'initier une construction clean + (ou de les supprimer entièrement).

Très bien un cas de coin, mais le signaler en raison de discussions de commentaires.

+0

Si vous ajoutez des actions de construction qui déplacent des fichiers .dll vers un nouvel emplacement, vous pouvez obtenir des résultats de construction «incorrects» en effectuant simplement une reconstruction. Si vous mélangez un projet vb.net et un projet C#, les choses vont encore pire, les concepteurs de formulaires brisés et pas de travail. – CodingBarfield

+0

+1 Notez également que le comportement de reconstruction ne semble pas être cohérent entre les langues en ce qui concerne les dépendances: http://stackoverflow.com/questions/12163080/vs2010-lnk1181-when-rebuilding-project-with-dependency – lesscode

12

De http://www.cs.tufts.edu/r/graphics/resources/vs_getting_started/vs_getting_started.htm, (juste googlé):

Construire signifie compiler et lier uniquement les fichiers sources qui ont changé depuis la dernière construction, tandis que Reconstruire des moyens compiler et lier tous les fichiers source, peu importe qu'ils aient changé ou non . Construire est la chose normale à faire et est plus rapide. Parfois, les versions des composants cibles du projet peuvent se désynchroniser et la reconstruction est nécessaire pour que la génération réussisse. En pratique, vous n'avez jamais besoin de nettoyer. Construire ou reconstruire la solution construit ou reconstruit tous les projets dans 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 StartUp, 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 devoirs ne comportent généralement qu'un seul projet, la solution Construire ou Reconstruire est identique à Construire ou Reconstruire.

Compile compile juste le fichier source en cours d'édition. Utile pour vérifier rapidement les erreurs lorsque le reste de vos fichiers source sont dans un état incomplet qui empêcherait la création de l'ensemble du projet. Ctrl-F7 est la touche de raccourci pour Compiler.

44

1 Par projet, reconstruire le projet = (projet propre + projet de construction). Par solution, reconstruire le projet Sln = foreach (projet Clean + Build)!= Clean Sln + Build Sln

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

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

Clean Sln + Construire Sln = (Clean proj1 + Clean proj2 + Clean Proj3) -> (Build proj1 + Construire proj2 + Construire Proj3)

-> signifie série, + signifie en même temps

donc il y a une chance lorsque vous soumettez beaucoup de changements de code pendant que vous n'êtes pas configuré les dépendances du projet correctement, reconstruire Sln causerait à certains d'entre vous proj lien vers une libérée périmée, car toutes les constructions ne sont pas garanties après tout nettoie (dans ce cas, Cl ean Sln + Construire Sln donnera une erreur de lien, et vous faire savoir que, immédiatement, au lieu de vous donner une application avec un comportement étrange)

+6

est la réponse la plus exacte, car elle explique pourquoi parfois je ne pouvais pas reconstruire, mais j'étais capable de nettoyer + construire. –

3

De this blog post que l'auteur lié comme a comment on this question:

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

La différence est dans la séquence que les projets deviennent propres et construisent. Soit disons que nous avons deux projets dans une solution. Nettoyer et puis construire effectuer propre à la fois les projets et puis la construction se produira individuellement tandis que sur le projet de reconstruction A va obtenir et nettoyer, puis construire après que le projet B sera propre, puis construire et ainsi de suite.

Questions connexes