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);
     }
}

4 thoughts on “Como saber si un assembly esta compilado en modo Debug o Release [Ampliado]”

  1. 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.

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>