Para responder a su primera pregunta, solo necesita incluir PDB para una versión de producción si necesita números de línea para sus informes de excepción.
Para responder a su segunda pregunta, utilizar el indicador "Optimizar" con PDB significa que cualquier stack "collapse" will be reflected in the stack trace. No estoy seguro de si el número de línea real reportado puede estar equivocado, esto necesita más investigación.
Para responder a su tercera pregunta, puede obtener lo mejor de ambos mundos con un truco bastante bueno. Las principales diferencias entre la versión de depuración predeterminada y la versión de lanzamiento predeterminada son que cuando se realiza una versión de lanzamiento predeterminada, la optimización se activa y los símbolos de depuración no se emiten. Por lo tanto, en cuatro pasos:
Cambie su configuración de lanzamiento para emitir símbolos de depuración. Esto prácticamente no tiene ningún efecto en el rendimiento de su aplicación, y es muy útil si (¿cuándo?) Necesita depurar una versión de lanzamiento de su aplicación.
Compilar usando su nueva configuración comunicado de acumulación, es decir con símbolos de depuración y con optimización. Tenga en cuenta que el 99% de la optimización del código la realiza el compilador JIT, no el compilador del lenguaje.
Cree un archivo de texto en la carpeta de su aplicación llamada xxxx.exe.ini (o dll o lo que sea), donde xxxx es el nombre de su ejecutable. Este archivo de texto debe ser inicialmente como:
[.NET Framework Debugging Control]
GenerateTrackingInfo=0
AllowOptimize=1
Con estos ajustes, su aplicación se ejecuta a toda velocidad.Cuando se desea depurar su aplicación mediante la activación de seguimiento de depuración y, posiblemente, apagar (CIL) la optimización del código, sólo tiene que utilizar los siguientes ajustes:
[.NET Framework Debugging Control]
GenerateTrackingInfo=1
AllowOptimize=0
EDITAR De acuerdo con el comentario de ojo de gato, this can also work in a hosted environment como ASP .RED.
Ver la comparación de opciones en http://blog.vuscode.com/malovicn/archive/2007/08/05/releasing-the-build.aspx –