Je travaille sur un projet Web Legacy ASP.NET (par rapport à une application Web) chez un client depuis un certain temps et son temps de compilation lente m'a demandé: P>
C'est un joli petit site Web, mais toute la solution a des tonnes de fonctionnalités - 19 projets d'une valeur, dont 18 compilent très rapidement (les projets non-web). Le projet de site Web lui-même a ~ 100 pages et ~ 15 contrôles d'utilisateur (celles-ci prennent en réalité environ la moitié de l'heure de la compilation) et compile normalement dans les 30 à 60 secondes. Une re-construction complète se rapproche de ce dernier. P>
Alors, certaines choses que je crois pourraient le ralentir (vous démystifez-les): p>
Je n'ai pas d'ordinateur chétif, son pouvoir de traitement n'est donc pas un problème. J'ai également travaillé sur des projets d'application Web équivalents dans la taille et la complexité qui compilent en quelques secondes seulement. P>
Je suis ouvert à peu près n'importe quoi, alors j'aimerais entendre vos pensées! En outre, si vous pensez que cela devrait être un wiki, faites le moi savoir. P>
5 Réponses :
Lire d'abord ce blog post Conseils pour optimiser le temps de conception Construire des performances pour les sites Web dans Visual Studio 2005 P>
points principaux faits: p>
Une autre option qui pourrait vous aider à passer à un disque RAM: Développement de la course à partir d'un disque RAM - Options et produits P>
Si cela n'aide pas peut-être peut-être diviser votre gros WAP dans plusieurs personnes pourraient améliorer la compilation. Malheureusement, cette stratégie exige que vous déposez de vous développer sur Cassini. Au lieu de cela, vous devrez utiliser IIS comme hôte: Utilisation de plusieurs projets d'application Web (WAP) dans une solution p>
Mes observations ont été identiques: les projets de site Web prennent un certain temps à la construction, plus long, puis des projets d'applications Web. Je pense que j'ai trouvé des informations sur pourquoi, consultez ceci: http://msdn.microsoft.com/en-us/library/aa730880(vs.80).aspx p>
Recherche de "Développement itératif". Il en va de suite sur les projets de site Web, par rapport aux projets d'application Web: P>
Par défaut, Visual Studio Complètement compiler des projets de site Web chaque fois que vous exécutez ou déboguez n'importe quelle page. C'est fait pour identifier les erreurs de compilation n'importe où sur le site. Cependant, un La construction complète du site peut considérablement ralentir le développement itératif processus, donc c'est généralement recommandé de changer la construction Option de projet pour compiler uniquement la Page actuelle sur la course ou le débogage. P> blockQuote>
Lecture supplémentaire: Weblogs .asp.net / Scottgu / ...
Un fait que la plupart des développeurs négligent dans un projet Web ASP.NET constitue la quantité de classes dans le dossier asp.net crée un assemblage pour chaque
répertoire d'applications (telle que
App_code) et un pour le principal
annuaire. (Si des fichiers dans un répertoire
sont dans une programmation différente
Langues, puis assemblages distincts
sera créé pour chaque langue.) p>
blockQuote>
Donc, si vous pouvez réduire fondamentalement la hiérarchie des dossiers et réduire la quantité de classes dedans, il sera réduira probablement em> le temps de compilation. P>
Lorsque la compilation de projet Web démarre, le compilateur ASP.NET doit relier les 18 fichiers DLL distincts. du point de vue de la main-d'œuvre, avoir 18 projets est un peu excessif à moins qu'il y ait de véritables raisons de le faire. J'espère que ça vous aide. P>
Plus vous y parvenez de classes, plus ce sera le temps de compilation.
De ASP.NET Compilation Aperçu de la MSDN : P>
Une autre chose que j'ai remarquée de votre message est que vous avez 18 projets non-site Web.
Je pense que c'est un peu trop excessif car pensez-y de cette façon.
P>
Si ces projets peuvent être combinés pour réduire le nombre de DLL, il pourrait également em> l'aide.
p>
Je suggérerais d'examiner les projets et de les combiner.
p>
La raison de la multitude de projets est que notre tâche était d'intégrer un autre système dans le site Web actuel, mais de maintenir une très faible couplage - en leur donnant essentiellement la possibilité d'échanger notre système d'intégration avec un autre. Notre solution a ajouté 7 projets à la 12. Garnissant, mais c'était une exigence.
Cela peut ne pas être idéal, mais vous pouvez diviser vos projets en plusieurs solutions. Par exemple, vous pouvez prendre les contrôles de l'utilisateur et les mettre en solution A et le reste des projets dans la solution B. Puis compilez les commandes de la solution A et la référence de fichier à partir de la solution B qui devrait vous aider à réduire l'heure de la compilation p>
Site Web ou projet Web, la performance doit être similaire après la phase de compilation. Si la question est une mauvaise performance immédiatement après le déploiement d'un nouvel ensemble de codes, une façon rapide de penser est de pré-publier le site. (Voir référence http://msdn.microsoft.com/ EN-US / Bibliothèque / 1y1404zt (vs.80) .aspx ) p>
Selon les options que vous avez choisie lors de la publication, vous pourrez peut-être manquer de flexibilité pour apporter des modifications à la volée (que vous ne devriez pas quand même pas). P>
La performance est bonne après la compilation; J'ai posté la question parce que je suis dans une phase de mise en œuvre de la demande de test / changement de changement et que je pense que probablement une heure de chaque jour est consacrée à la compilation et espérait que je pouvais récupérer un temps perdu.
19 projets? Pour un "petit site"?
30 à 60 secondes pour 19 projets? Cela ne semble pas vraiment être un problème.
Je sens votre douleur, mais 30 à 60 secondes pour une compilée ne semble pas déraisonnable pour un projet de cette taille. Avez-vous envisagé d'envelopper vos 18 autres projets dans les DLL et de les référencer à partir du projet Web?
Eh bien, d'accord, mais les autres projets ne sont qu'une poignée de classes simples - d'autres projets qui ont été divisés en raison de problèmes de référence circulaires. Comme je l'ai dit, ces autres projets compilent super vite, il ralentit une fois que cela se rend au projet de 1 site Web dans la solution. Peut-être le nombre de références qui rendent-ils la compilation de site Web ralentissée?
Le commentaire "Références circulaires" a piqué mon intérêt. Dll'ing Les autres projets peuvent aider, car le compilateur n'aura plus à nous familier sur eux.
Il existe une poignée de projets dans la solution qui ne sont plus modifiés ni entretenus par le client, alors les dlling eux est définitivement une option. Je vais essayer d'essayer quand j'ai du temps libre (ha!).