Quelle est la différence entre une simple reconstruction et un nettoyage + construction dans Visual Studio 2008? Est-ce que Clean + Build est différent de Clean + Rebuild ?
Quelle est la différence entre une simple reconstruction et un nettoyage + construction dans Visual Studio 2008? Est-ce que Clean + Build est différent de Clean + Rebuild ?
Réponses:
Reconstruire = nettoyer + construire (généralement)
Détails notables:
Pour une solution multi-projets, "reconstruire la solution" fait un "nettoyage" suivi d'une "build" pour chaque projet (éventuellement en parallèle). Alors qu'une «solution propre» suivie d'une «solution de génération» nettoie d'abord tous les projets (éventuellement en parallèle) puis construit tous les projets (éventuellement en parallèle). Cette différence de séquence des événements peut devenir significative lorsque des dépendances inter-projets entrent en jeu.
Les trois actions correspondent aux cibles MSBuild. Un projet peut donc remplacer l'action Reconstruire pour faire quelque chose de complètement différent.
Earl a raison que 99% du temps Reconstruire = Nettoyer + Construire.
Mais ils ne sont pas garantis d'être les mêmes. Les 3 actions (reconstruire, construire, nettoyer) représentent différentes cibles MSBuild. Chacun 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 la reconstruction pour effectuer plusieurs actions avant de lancer une construction propre + (ou de les supprimer complètement).
Très bien un cas d'angle mais le soulignant en raison des discussions sur les commentaires.
Définissons l'implémentation de reconstruction par défaut en termes d'implémentations de nettoyage et de construction par défaut:
Par projet: projet de reconstruction = projet propre + projet de construction.
Par solution: Rebuild sln = foreach project in sln (Clean project + Build project).
Notez qu'en raison de différences dans l'ordre d'exécution, Reconstruire sln n'est pas identique à (Nettoyer sln + Créer sln) = (Projet foreach dans le projet Clean sln) + (Projet foreach dans le projet Build sln). En outre, ce «foreach» peut s'exécuter simultanément, de sorte que différentes tâches sont autorisées à s'exécuter simultanément dans les deux scénarios.
Supposons que vous ayez un sln contenant proj1, proj2 et proj3.
Reconstruire sln = (Clean proj1 + Build proj1) & (Clean proj2 + Build proj2) & (Clean proj3 + Build proj3)
Clean Sln + Build Sln = (Clean proj1 & Clean proj2 & Clean proj3) + (Build proj1 & Build proj2 & Build proj3)
+ signifie série, & signifie simultané.
Par conséquent, si les dépendances de projet ne sont pas configurées correctement, il est possible que lorsque vous exécutez Rebuild sln, certains de vos projets soient liés à une bibliothèque périmée. En effet, il n'est pas garanti que tous les nettoyages soient terminés avant le début de la première génération. Si vous exécutez Clean sln + Build sln, ils donneront une erreur de lien et vous le feront savoir immédiatement, au lieu de vous donner une application avec un comportement étrange.
De http://www.cs.tufts.edu/r/graphics/resources/vs_getting_started/vs_getting_started.htm , (il suffit de le googler):
Générer 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 changé ou non. La construction est la chose normale à faire et est plus rapide. Parfois, les versions des composants cibles du projet peuvent se désynchroniser et une reconstruction est nécessaire pour réussir la génération. En pratique, vous n'avez jamais besoin de nettoyer.
Build or Rebuild Solution construit ou reconstruit tous les projets de votre solution, tandis que Build or Rebuild construit ou reconstruit le projet StartUp, "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 devoirs n'ont généralement qu'un seul projet, la solution de construction ou de reconstruction est en fait la même que la construction ou la reconstruction.
Compiler compile simplement 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 une génération réussie de l'ensemble du projet. Ctrl-F7 est la touche de raccourci pour la compilation.
De ce billet de blog que l'auteur a lié en tant que 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. Le nettoyage et la génération effectueront le nettoyage des deux projets, puis la génération se produira individuellement tandis que lors de la reconstruction, le projet A sera récupéré et nettoyé, puis généré après ce projet B sera propre, puis généré et ainsi de suite.