45 votes

Comment la force par rapport à 2010 pour passer à "construire" des projets qui n'ont pas changé?

Notre produit est la solution a plus de 100+ projets (500+ksloc de code de production). La plupart d'entre eux sont des projets C#, mais nous avons aussi quelques-uns à l'aide de C++/CLI pour faire le pont avec le code natif.

La reconstruction de l'ensemble de la solution prend plusieurs minutes. C'est très bien. Si je veux reconstruit la solution je pense que ça va vraiment prendre un certain temps. Ce n'est pas de l'amende est le temps nécessaire à la construction de la solution après une reconstruction complète. Imaginez, j'ai utilisé plein de reconstruire et de savoir sans effectuer de modifications à la solution que j'ai de la presse Construire (F6 ou Ctrl+Maj+B). Pourquoi il faut 35s si il n'y a pas de changement? En sortie, je vois qu'il a commencé "construction" de chaque projet - ce n'est pas réel, les construire, mais il fait quelque chose qui consomme beaucoup de temps.

Que 35s retard, c'est une douleur dans le cul. Oui je peux améliorer le temps en n'utilisant pas de générer la solution, mais seulement de construire du projet (Maj+F6). Si je créer un projet sur projet de test, je suis actuellement en train de travailler sur les il faudra "seulement" 8+s. Il m'oblige à exécuter le projet de construire sur le bon de projet (le projet de test pour s'assurer dépendant de code testé est de construire). Au moins ReSharper test runner correctement reconnaît que seul ce projet unique doit être mise en place et la reprise de test contient généralement seulement 8+s de la compilation. Mon codage Kata est: ne pas toucher les touches Ctrl+Maj+B.

Le projet de test génération prend 8s même si je ne fais pas de changements. La raison pour laquelle il faut 8s est parce qu'il "construit" dépendances = dans mon cas, il "crée" plus de 20 projets, mais j'ai fait des modifications uniquement à l'unité de test ou de dépendance unique! Je ne veux pas qu'il touche d'autres projets.

Est-il un moyen de dire simplement à VS pour construire des projets où quelques changements ont été faits et des projets qui dépendent de changé (de préférence de la présente partie comme une autre option de compilation)? J'ai peur que vous allez me dire que c'est exactement ce que VS est en train de faire, mais dans le MME chemin ...

Je veux améliorer mon TDD expérience et de réduire le temps de compilation (en TDD, la compilation peut se produire deux fois par minute).

Pour rendre le tout encore plus frustré, je travaille dans une équipe où la plupart des développeurs sont utilisés pour travailler sur des projets Java avant de se joindre à celui-ci. Vous pouvez donc imaginer comment ils sont énervé quand ils doivent utiliser VS contrairement à la compilation incrémentielle en Java. Je n'ai pas besoin compilation incrémentielle de classes. J'attends de travail supplémentaires compilation des solutions. En particulier dans des produits comme VS 2010 Ultimate qui coûte plusieurs milliers de dollars.

Je ne veux vraiment pas à obtenir des réponses comme:

  • Faire une solution distincte
  • Décharger des projets que vous n'avez pas besoin
  • etc.

Je peux lire les réponses ici. Ceux ne sont pas des solutions acceptables. Nous ne sommes pas payer pour VS faire ce genre de compromis.

13voto

Dmitriy Konovalov Points 1032

Par défaut, Visual Studio sera toujours effectuer la construction de chaque projet dans votre solutuion lorsque vous exécutez un seul projet. Même si ce projet ne dépend pas de tous les autres projets dans votre solution.

Aller à Outils | Options | Projets et Solutions | Construire et d'Exécuter et de cocher la case "Seulement de construire des projets de démarrage et dépendances sur Exécuter". Depuis maintenant lorsque vous exécutez votre projet (touche F5), Visual Studio va seulement de construire votre projet de démarrage et de ceux des projets dans votre solution de laquelle il dépend.

8voto

charley Points 3329

Est-il un moyen de dire simplement à VS pour construire des projets où certains des modifications ont été effectuées et les projets qui sont tributaires de ceux changé (de préférence, cette partie comme une autre option de compilation)? J'ai peur que vous allez dire moi que c'est exactement ce que VS est en train de faire, mais dans le MME chemin ...

Pas vraiment (vous comprenez déjà).

Vous parlez d'un "système de construction". MSVS n'est pas cela. C'est un IDE, ce qui se passe pour vous permettre d'organiser vos actifs dans des projets et des solutions, et oui, pour "construire". Mais, il n'est pas un système de construction. Il ne sera jamais un système de build (c'est une longue histoire, mais très différente de la technologie est nécessaire).

En revanche, MSVS est un IDE pour accélérer le développement itératif, y compris le "débogage" cycle (par exemple, "dans" et "étape" dans la debbugger cours de fonctionnement du système). C'est là que MSVS "brille".

Il n'est pas, et ne sera jamais, "briller" comme un système de construction. Ce n'est pas ce qu'il a été créé. Et, ce ne sera probablement jamais changer (c'est une longue histoire, même Microsoft est susceptible d'accord).

Je n'essaie pas d'être mignon, et je tiens à m'excuser pour la réalisation de cette news. Cette réponse me fait mal aussi.

J'attends de travail supplémentaires compilation des solutions. En particulier dans produit comme VS 2010 Ultimate qui coûte plusieurs milliers de dollars.

MSVS est un IDE pour le débogage interactif/de développement, et non pas un système de construction (voir ci-dessus). Alors, vous êtes en mesure dans un produit scénario pour lequel il n'a pas été conçu, et dans lequel il ne sera probablement jamais la fonction que vous désirez.

Je ne veux vraiment pas à obtenir des réponses comme:

  • Faire une solution distincte
  • Décharger des projets que vous n'avez pas besoin
  • etc.

Je peux lire ces réponses . Ceux ne sont pas des solutions acceptables. Nous ne sommes pas payer pour VS faire ce genre de compromis.

Vos attentes sont raisonnables. Je les veux trop. Cependant, MSVS n'est pas un produit qui ne sera jamais livrer.

Encore une fois, je ne cherche pas à être "cute". Si vous êtes prêt à investir dans un "système de construction", vous pouvez trouver de la valeur en utilisant quelque chose comme CMake pour la gestion de vos configurations et d'exportation Makefiles (ou quelque chose) pour effectuer votre "réel" s'appuie, mais aussi de "l'exportation" *.vcproj et *.sln fichiers lorsque vous souhaitez faire des travaux de manière itérative et interactive au sein de la MSVS IDE.

EDIT: non, ce que vous voulez, c'est un SSD (solid-state-disk) de votre espace de travail pour obtenir un 10x amélioration dans la vitesse, ou un disque RAM pour une 100x amélioration en vitesse pour les versions (pas de blague, 64 mo de RAM sur un LGA2011 socket vous donne un 32MO de RAM, du disque, qui est ce que nous utilisons.)

4voto

Assaf Stone Points 4212

L'une des choses que vous pouvez faire est de briser votre application dans les petites solutions, chacune étant solidaire de la partie. La construction de chaque solution séparément. Demandez à chaque solution d'utiliser les résultats de ces solutions, il dépend, plutôt que d'utiliser le code source.

Cela permettra plus courts cycles de rétroaction pour chaque composant

EDIT: Modifié Solution

En outre, vous permettra de créer un intégrative de construire plutôt que de l'obtention de toutes les sources, les compiler et de tester, il va obtenir le binaire construire des produits de la composante CI s'appuie. Cette intégrative de construire devrait être déclenché pour exécuter après chaque succès de la version du composant.

Cette version doit être l'équivalent binaire de build complet (que vous avez encore devrait construire tous les soirs), mais prendra beaucoup moins de temps à s'exécuter, parce qu'il déclenche après un composant de l'incrément et n'a pas besoin de compiler ou d'obtenir toutes les sources.

En outre, si vous utilisez une entreprise de qualité du système de construction qui prend en charge le concept de distribution de votre construit entre plusieurs agents, vous serez en mesure à l'échelle de vos efforts et de raccourcir votre cycle CI à la quantité de temps qu'il faut pour construire le plus long composant, et de tester l'intégration de la suite (au plus).

Espérons que cette aide.

2voto

Hainesy Points 1958

Pesant un peu en retard sur ce sujet, mais avez-vous envisagé d'avoir différentes configurations de génération?

Vous pouvez indiquer à visual studio de ne pas construire de certains projets en fonction de la configuration de build.

Le développeur pourrait il suffit de sélectionner la configuration pertinente pour le projet de leur travail.

1voto

Wade Hatler Points 601

Joli ancien thread, mais je peux dire que j'ai été atteinte d'une version plus petite de la même chose et j'ai mis à jour pour Visual Studio 2012 et les problèmes semble avoir enfin été résolu. Le RedGate .NET Démon solution mentionnée ci-dessus semble également fonctionner assez bien pour l'instant.

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