2009-11-10 4 views
7

Je sais que plusieurs questions posent la même question "Pourquoi devrais-je utiliser le mode release". Le problème que j'ai avec les réponses est qu'elles indiquent simplement, assez fortement, que vous devriez toujours employer le mode de libération quand un site Web est dans la production.Quel est le véritable avantage du mode de libération pour ASP.Net?

Pourquoi? Je comprends que le code est optimisé dans les assemblages, mais à quel niveau? Est-ce que ça va optimiser le code bien écrit? Quel genre d'optimisations effectue-t-elle?

Y a-t-il des analyses à ce sujet? Y at-il de toute façon je peux tester les différences entre déboguer et libérer? Je voudrais vraiment que quelqu'un qui comprenne le pourquoi de ceci fournisse au moins une référence à un certain matériel de lecture définitif, car je n'ai pas encore trouvé quelque chose suffisamment dur pour satisfaire ma curiosité sur cette question.

Répondre

10

Lisez ceci en premier: http://blogs.msdn.com/tess/archive/2006/04/13/575364.aspx, je viens de le trouver dans le cadre de la réponse à cette question, c'est un excellent article.

Voir cette question: At what level C# compiler or JIT optimize the application code? pour quelques informations sur les optimisations générales du compilateur. De plus, gardez à l'esprit que pour une application Web Asp.Net, passer en mode release compilera les assemblages en mode release, mais pour les compilations de pages, vous devrez peut-être aussi éditer l'attribut debug de l'élément compilation de votre site. config.

<compilation defaultLanguage="c#" debug="true"> 

applications Web font des choses étranges quand le débogage = true est défini, par exemple, ils ne respectent pas les délais d'attente de demande car il interférerait avec le débogage.

Voici un article du Gu sur le sujet: Don’t run production ASP.NET Applications with debug=”true” enabled

+0

+1 pour le lien vers l'article Tesses. C'est exactement ce que je voulais savoir. Le pourquoi exact de la question. Le Gu a également fourni un aperçu de la mise en cache de WebResource.axd et de ScriptResource.axd mis en cache dans des instances de déploiement en mode release. – Khanzor

+1

En outre, si vous utilisez l'un des outils ASP.NET AJAX, la définition de debug = "false" dans web.config garantit que les versions minifiées des scripts MS sont envoyées au navigateur. –

+0

Nice @Zhaph, bon à savoir! – Khanzor

Questions connexes