Como saber si un assembly esta compilado en modo Debug o Release [Ampliado]

En estos días me topé con la necesidad de conocer cual era el modo en el cual fue compilado cierto assembly. La primer herramienta a la que acudí me dió una respuesta: Reflector de Lutz Roeder.

El compilador agrega el attributo DebuggableAttribute como información del assembly. Los modos de debug fijados por el compilador dependerán de los parámetros que le pasemos al compilador por línea de comandos o el tipo de compilación que definamos en el proyecto de Visual Studio.

En el caso de haber compilado con Visual Studio 2005 ó 2008 en modo Release, nos encontraremos con la siguiente línea:

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]

En caso de haber compilado en modo Debug:

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.EnableEditAndContinue | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.Default)]

Les recomiendo la lectura de la documnetación correspondiente a los valores del enumerado System.Diagnostics.DebuggableAttributes.DebuggingModes

A continuación un ejemplo de código que revela el modo de compilación:
La propiedad DebuggableAttributes.IsJITTrackingEnabled controla si en tiempo de ejecución el CLR hace un seguimiento de la información que es importante para el depurador mientras se genera el código. Esta información contribuye a que el depurador mejore la depuración.

static

 

 

void Main(string[] args)
{
     string filePath = args[0];
     Assembly asm = Assembly.LoadFile(Path.GetFullPath(filePath));
     foreach (Attribute att in asm.GetCustomAttributes(false))
     {
          if (att is System.Diagnostics.DebuggableAttribute)
          Console.WriteLine("Modo Debug: {0}",((DebuggableAttribute

)att).IsJITTrackingEnabled);
     }
}

Published Monday, April 28, 2008 6:20 AM by cwalzer
Filed under: ,

Comments

# re: Como saber si un assembly esta compilado en modo Debug o Release

Wednesday, April 09, 2008 3:31 PM by Sergio Tarrillo

Gracias Carlos!

es una forma rápida práctica, he encontrado hasta algunos programitas para hacer este check, pero esto es más simple.

Saludos,

# re: Como saber si un assembly esta compilado en modo Debug o Release

Friday, April 25, 2008 4:49 AM by espinete

Señor, se puede saber por código si el ensamblado está en modo debug o release ? Se podrían consultar esos atributos por código ??

Saludos.

# re: Como saber si un assembly esta compilado en modo Debug o Release [Ampliado]

Monday, April 28, 2008 9:10 AM by cwalzer

Hola Espinete, he ampliado el artículo respondiendo a tu pregunta.  Gracias

Leave a Comment

(required) 
(required) 
(optional)
(required) 
Powered by Community Server (Commercial Edition), by Telligent Systems