12
votes

Comment configurer VS pour compiler uniquement le code modifié

J'ai une très grande solution et il s'agit de la compilation à chaque fois que je suis en train de déboguer.
Je sais donc que je peux avoir pour désactiver la construction de tous les projets dans la configuration de la solution, mais il y a un moyen de dire à Visual Studia pour compiler uniquement le code changé?
Je suis sûr que c'est.

Merci d'avancer.


1 commentaires

5 Réponses :


0
votes

2 commentaires

Oui, je connais la différence, mais la triste chose est qu'il y ait tous la compilation même si je n'ai rien changé ...


Il semble que vous ayez une référence croisée complexe entre des projets de solution tels que mentionnés par Oliver



2
votes

Visual Studio le fait effectivement hors de la boîte si vous faites une construction (pas une reconstruction). Cependant, cela traitera de meilleurs types de projets que d'autres. Par exemple, un projet de configuration ou de déploiement sera toujours construit.

Vous pouvez décharger un projet que vous n'avez pas besoin d'accélérer la construction.

En outre, je trouve que cela fonctionne bien pour démarrer l'application sans déboguer et joindre le débogueur une fois que l'application est en cours d'exécution. D'après ce que je peux dire, cela minimise le nombre de symboles de débogage en cours de chargement sur ce qui est réellement utilisé par l'application en cours d'exécution.

Autant que je sache Msbuild (le moteur de construction utilisé par VS) détectera automatiquement la reconstruction en fonction de quels fichiers ont été modifiés. Assurez-vous donc de ne pas avoir de fichiers générés à jour avec chaque construction. Par exemple, lorsque vous mettez à jour la version (Assembllement) à l'aide de la métadonnées de contrôle de la source. Tout fichier modifié déclenchera une construction de tous les projets qui l'utilisent et tous les projets qui en dépendent. Une configuration comme celle-ci reconstruit efficacement la plupart de votre application à chaque fois.


3 commentaires

Et si je veux déboguer le processus d'initialisation? Mon problème est que cela comile tout même si je n'ai rien changé ... je suis sûr qu'il y a une option telle: sur courir, déboguer -> Reconstruisez tout, et il doit être: sur courir, débogage -> construire tout


@Rodnower - Mes suggestions ne vous aideront pas à l'initialisation des applications de débogage WEHN. J'ai développé ma réponse, j'espère que cela vous aidera.


Le moteur de détection est défectueux. J'ai deux exécutables dans ma solution avec une dépendance de la bibliothèque X. Si je construisiez un projet exécutable A et exécutez-le, puis projetez le projet exécutable B, je peux reproduire de manière fiable VS tenter de construire à nouveau x et échouer en cas de verrouillage des fichiers. Ce sont des bibliothèques de classe simples.



11
votes

Comme Marnix et Anton ont déjà dit que c'est ce que vs est normalement. Mais si vous avez beaucoup de projets dans votre solution qui dépendent l'un de l'autre et que vous apportez des modifications à un composant qui sera utilisé par tout ou sur la plupart des autres projets, il doit également construire les autres pour vous assurer que tout fonctionne comme prévu. .

Mise à jour

Donc, si cela commence à recompiler même si vous n'avez pas fait de changement, nous devons savoir comment vs essaie de savoir ce qu'il doit faire sur une construction incrémentale.

Pour cela, il vérifie simplement les date de date de chaque fichier et s'il y a des modifications. Si oui, recompilez ce fichier et toutes ses personnes à charge (par ex. Modifications dans un STDAFX.H entraînera une reconstruction complète, une cause normalement chaque fichier source se référera à celui-ci).

Mais il y a aussi des exceptions à ce comportement. Un projet de configuration par exemple sera toujours reconstruit, même s'il n'y a pas de modifications apportées (en raison de ce fait, j'exclure normalement le projet de configuration du processus de construction et le démarrez que manuellement en cas de besoin).

Donc, si vous n'avez que C / C ++, C #, VB, etc. Projet qui soutient normalement les constructions incrémentielles, il doit y avoir quelque chose qui change entre deux constructions, même si vous ne changez rien.

Voici quelques possibilités:

  • une commande pré ou post construction qui modifie un fichier source
    • Cela peut peut-être une mise à jour automatique de l'ajout du numéro de révision de votre repo dans une ressource de fichier montageInfo.
    • ou une commande Copy / Supprimer qui apporte quelques modifications dans votre structure de répertoire (j'ai utilisé cette fois pour supprimer le répertoire de sortie dans une commande de pré-construction pour forcer une reconstruction sur chaque construction).
    • Un incrémenteur automatique de la version d'assemblage
      • peut-être en utilisant [montage: assemblageversion ("1.0. *")] ou un autre processus externe pour augmenter le numéro de construction

        Si l'une des étapes ci-dessus arrive à un module à partir duquel tout ou la plupart de vos autres projets dépendent que tout doit être reconstruit.


4 commentaires

Droit. J'ai des commandes pré-construit qui créent des cours de test inclus dans le processus de construction. Merci beaucoup.


J'ai eu une dll avec Copier toujours , changeant à Copier si plus récent retourne la construction incrémentielle.


Si vous travaillez dans un environnement d'entreprise comme moi, il peut y avoir des dépendances sur le code généré qui peut être généré avant chaque compilé qui le causerait presque certainement de reconstruire à chaque fois.


La solution de Xmedeko l'a fait pour moi aussi. Sorte de "duh" mais facile à manquer. Merci!



0
votes

Je vais ajouter cela car personne ne l'a mentionné - si vous avez un projet d'installation dans votre solution, ce projet sera reconstruit chaque fois que vous reconstruisez ou exécutez le programme, même si aucun autre projet n'a changé. Comme les projets d'installateurs de construction peuvent prendre beaucoup de temps (~ 45 secondes sur ma machine, pour mon projet de taille moyenne) , c'est un problème.

Pour résoudre, entrez simplement dans le gestionnaire de configuration (solution de clic droit -> Propriétés -> Propriétés de la configuration) et décochez "Créer" le projet d'installation lors de la mode de débogage.


0 commentaires

1
votes

1 / Vérifiez le journal de construction dans un mode verbose (Outils -> Options -> Projets et solutions -> Construire et exécuter).

2 / Parmi les erreurs éventuelles, il peut y avoir une DLL en mode "Copier local" qui provoque le problème, si tel est le cas, consultez la DLL, trouvez la DLL et définissez la valeur "Copie locale" sur false .

[J'ai trouvé ces solution ici] HTTPS: // oz-code.com/blog/net-c-tips/visual-studio-servations-rebuilding-projects-no-good-Reaison


0 commentaires