Je travaille actuellement avec un CMS ASP.NET qui garde près de 500 fichiers de code dans l'annuaire APP_CODE, ainsi que des centaines de formulaires Web avec code-derrière dans différents dossiers du site. C'est un projet de site Web (pas un projet d'application Web) et je suis réticent à la modifier, car il s'agit d'un projet avec plusieurs développeurs impliqués, plus c'est la façon dont le CMS est expédié. P>
Je recherche des astuces et des conseils pour optimiser le processus de construction de ce projet de site Web, car Visual Studio souhaite souvent reconstruire tous les fichiers source et les fichiers de code-code, ce qui peut prendre plusieurs minutes. P>
Y a-t-il des moyens d'éviter de reconstruire tous les fichiers? Devrais-je affronter le point de séparer notre code et le code CMS dans des projets d'application Web distincts (au lieu d'un projet de site Web)? Y a-t-il d'autres moyens d'améliorer les performances de construction? P>
5 Réponses :
Vous devriez au moins essayer de le convertir en une application Web, sauf décision politique de ne pas le faire. Ce n'est pas aussi difficile que cela sonne, le plus gros problème est que tous vos développeurs devraient avoir à reconfigurer leurs solutions. P>
Essayez de déplacer autant que du code dans App_Code à différents projets, car ils n'ont pas vraiment besoin d'être sur le site Web. Cela devrait aider un peu au moins au moins. P>
Ce que je suis inquiet, c'est que la modification de la structure du projet facilite l'application des correctifs des développeurs du CMS plus fort et ferait également la prise de supporter plus difficile (puisque nous n'utilisons pas la configuration "officielle".)
Je suis d'accord @Blixt. Bien que ce n'est vraiment pas si difficile de convertir un site Web en une application Web, vous vous verrez vous bloquer des mises à niveau et des correctifs de fournisseur de CMS comparativement.
Si la solution la plus simple de la solution est de maintenir la structure .Cs aussi semblable que possible, j'irais avec Andreas 'Recommandation de déplacer l'app_code dans au moins 1 autre projet. P>
Scott Guthrie a posté quelques conseils sur Speeing compile dans VS 2005, vous n'avez pas spécifié la version que vous étiez activée, mais les mêmes conseils de vitesse s'appliquent. La deuxième partie de son poste est spécifique aux projets de site Web. P>
Un autre conseil serait si vous travaillez sur des pages et non du code en réalité dans le répertoire code> app_code code>, Il existe une option de construction qui peut être utile . Allez à Propriétés du projet strong >> Build fort>> Changement APP_CODE doit être construit ensemble, vous devez éviter d'avoir votre codeBehinds, etc. à l'intérieur. Tout ce qui peut être ailleurs devrait être. Juste une note: le temps de compilation, au moins en débogage, est généralement d'environ 30 à 50 fois plus rapidement dans une application Web. Cela étant dit, vous devez recompiler toute la demande de chaque code de code, il y a donc des inconvénients ... mais avec des changements d'espace de noms, je comprends que les patchs de contrainte vous mettraient sur vous. P>
Aussi, gardez à l'esprit que lorsque vous divisez le code dans d'autres projets, en plus d'être plus simple tout en termes de compilation, Visual Studio n'aura pas besoin de compiler ces autres projets de dépendance à moins qu'ils n'aient pas changé. Comme il se trouve en ce moment, tout est un jeu juste parce que tout dans votre projet capable de changer peut éventuellement affecter autre chose de là-bas ... Toutefois, si vous vous séparez, Visual Studio ne compilera que vos autres projets lorsqu'ils changent ou un projet ils référence sont reconstruits. p> app_code code>, cela vous permettra d'économiser beaucoup de temps de compilation. P>
Je pense que votre plus gros problème serait l'immense massive de fichiers. Je séparerais l'application Web dans plusieurs projets (au moins 2) projets: votre projet Web et une couche d'entreprise (ou quelque chose de cette nature). P>
Je préfère que la plupart de ces fichiers du code de l'application sont des entités ou des fichiers qui changent très rarement et donc dans votre situation, cela n'a pas beaucoup de sens pour les garder dans votre application Web. P>
Si vous décidez de passer à cet itinéraire lorsque vous effectuez une modification de l'un des fichiers de votre autre projet, vous devrez faire très attention lorsque vous déployez des modifications, car vous devrez déployer toute la DLL. P >
Vous devriez essayer le nouveau drapeau optimisecompilation que nous avons récemment ajouté. S'il vous plaît voir mon Blog Post pour apprendre à quoi il s'agit, et où obtenir ce. Sauf si vous êtes sur Win7 ou utilisez VS2010, vous devrez l'obtenir via une solution chaude. P> P>
Vous devriez certainement voir des améliorations lorsque vous modifiez un fichier dans App_Code, puis demandez une page, car app_code sera recompilé, tandis que les pages ne le feront pas. Notez que cela s'applique au comportement d'exécution, qui est différent du comportement de compilation qui se produit à l'intérieur vs.
Qu'attends de compilation debug = "False" TargetFramework = "4.5.1" Par défautLanguage = "C #" optimizecompilats = "vrai" Batch = "vrai" maxbatchgeneratedfilesize = "2147483647" NumrecompilesBeforeApprestart = "2147483647 i >?
Nous avons subi un problème similaire avec notre projet, qui est construit de cette façon d'autoriser l'ajout chaude de nouveaux sites partenaires de Whitelabel. P>
La manière la plus simple que nous avons constatée d'accélérer le temps de construction consistait à réduire le goulot d'étranglement de l'IO que Visual Studio se bloque. Obtenez un SSD décent (nous utilisons les lecteurs de Summit OCZ 60GB), vous devez trouver les temps de construction améliorés sensiblement. P>
L'autre économiseur de temps est de réduire le nombre total de répertoires que votre projet a. Pour chaque nouveau répertoire que Visual Studio rencontre, il lance une nouvelle instance du compilateur. Avoir autant de fichiers dans le même répertoire que possible réduit ce coût. (Pour obtenir la structure des dossiers qui rend le projet à maintenir, utilisez des dossiers virtuels) p>
Par hasard, est-ce que cms site de site?
Haha non, c'est un CMS peu connu appelé Litium. Mais maintenant je connais un autre CMS pour éviter ... =)
Oh non, Sitefinity va bien, mais cela souffre certainement des mêmes symptômes. Et cela me bugs que c'est aussi un site Web, plutôt qu'un projet d'application Web.
Oh, je vois ... Ouais Il serait bien mieux de séparer tout le code en projets compilables ...