2010-07-20 21 views
10

Estoy tratando de encontrar una explicación definitiva de qué efecto tiene la compilación en modo de lanzamiento en una aplicación web .Net 3.5 frente a debug = "false". Hasta ahora parece que establecer debug = "false" tiene el mismo efecto y la compilación en modo de lanzamiento se ha depreciado, pero no puedo encontrar ninguna evidencia firme de que este sea el caso.Release Mode vs Debug = "false"

Esta pregunta parecía prometedor, pero parece estar respondiendo a lo que es la diferencia entre la depuración y la versión se basa en lugar de modo de disparo y de depuración = "true": What's the difference between compilation debug="false" and Release mode?

Sin embargo lo hace enlace a este artículo: http://odetocode.com/blogs/scott/archive/2005/11/15/debug-and-release-builds-in-asp-net-2-0.aspx

"Este nuevo modelo de compilación hace que Configuration Manager para un sitio web sea obsoleto. La única opción que aparece en un sitio web de Visual Studio 2005 es una configuración de depuración. No se preocupe, no significa nada. El archivo web.config ahora gobierna la escuela ".

Ahora que es lo más cercano que he tenido a una respuesta y parece implicar que el modo de lanzamiento se ha depreciado a favor de depurar = "falso" pero no puedo encontrar ninguna confirmación de esto en MSDN o cualquier otra fuente.

Cualquier ayuda sería muy apreciada.

actualización

Lo sentimos; para aclarar esto es un "Proyecto de Aplicación Web" al que me refiero.

Para reformular mi pregunta un poco, si tengo la siguiente configuración en web.config:

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

¿Qué efecto (si lo hay) no liberación y el modo de depuración de compilación tienen?

Respuesta

5

Tienes que tener cuidado con la elección de tu palabra. Hay proyectos de "Aplicación web" y "Sitio web".

No hay configuración de "Versión" para los proyectos del "Sitio web". Los sitios web solo usan la configuración de depuración en la sección de compilación de web.config. Si abre un "Sitio web", observe que la única configuración que figura en el "Administrador de configuración" es "Depurar". Puede controlar la compilación desde la página de propiedades "Opciones de MSBuild" del proyecto o desde el cuadro de diálogo "Publicar sitio web".

Las configuraciones "Liberar" y "Depurar" funcionan como se espera para los proyectos de "Aplicación web".

1

La idea detrás del modo 'Release' & 'Modo de depuración' es que, en modo de depuración, la compilación contiene símbolos de depuración que son útiles para la depuración pero no para la producción, ya que ralentiza el proceso.

Sin embargo, el modo 'Release' elimina estos símbolos de depuración, por lo tanto, el proceso se ejecuta correctamente sin ningún problema.

Ahora, Microsoft ha implementado el modelo anterior en proyectos de aplicaciones web, mientras que el proyecto del sitio web es ligeramente diferente. Espero que esto ayude.

6

TL; DR = Lo más importante es compilation debug = "true | false". Sin embargo, compilar en Debug también tiene un efecto menor en el rendimiento.

La diferencia entre Debug y Release (aparte de definir la constante DEBUG o no) es el indicador "Optimizar código", que está deshabilitado en Debug y habilitado en Release. (Si nos fijamos en la configuración del proyecto, pestaña Build.)

El "código Optimizar" bandera indica al compilador lenguaje hacer algunas optimizaciones (como la eliminación de las variables utilizadas, y dejando de lado algunos símbolos de depuración) cuando se produce el DLL . Esta es una mejora de rendimiento relativamente menor (tal vez un mayor impacto en C++ vs C#/VB) y una ligera reducción en el uso de memoria DLL, en comparación con cuando el indicador no está configurado.

El indicador compilation debug = "true" indica al compilador JIT que este código debe estar conectado para la depuración. Esto reduce el rendimiento en varias dimensiones (tiempo de carga, tiempo de ejecución, memoria y carga de recursos) pero permite la depuración del código en ejecución.

Si desea rastreos de pila más detallados en producción, entonces probablemente pueda ejecutar una compilación de depuración con compilación debug = "false" con poca diferencia de rendimiento. Pero probaría el rendimiento de ambos para asegurarme de que no estás perdiendo demasiado.

El crédito pertenece a this answer que enlaza con this blog entry, y más tarde encontré this one, que contiene toda esta información.

0

Aquí está la diferencia. Si usted tiene esto en su archivo web.config:

<system.web> 
    <compilation debug="true" .../> 

Y se selecciona Release en el menú desplegable en Visual Studio (tenga en cuenta que están en conflicto), sería todo ser compilado en modo de depuración o modo de lanzamiento?

Visual Studio no sabe nada sobre la compilación de una aplicación web. Cree una aplicación web y consulte la carpeta bin y verá que está vacía. Eso es porque ASP.NET lo compila. ASP.NET usará el indicador compilation debug del archivo de configuración para descubrir cómo compilar los archivos .cs, crear formularios y controles de usuario, etc. También usará este indicador para decidir si debe agrupar y minificar.

This article lo resume bastante bien:

En conclusión, el control de depuración y liberación construye utilizando el atributo de depuración de la sección de compilación en web.config - a menos que esté Precompilar la página web con el comando Publicar o la herramienta de implementación del sitio web. El WSD le permitirá seleccionar compilaciones de Debug o Release, precompila el sitio y modifica web.config de manera apropiada.

Cuestiones relacionadas