Dupliquer possible:
Comment savoir si une application .NET a été compilée en mode DEBUG ou RELEASE?Je suis sûr que cela a déjà été demandé, mais Google et la recherche SO ont échoué.
Comment identifier si une DLL est une version release ou une version debug?
Réponses
Trop de publicités?À mon humble avis, L'application ci-dessus est vraiment trompeur; il ne regarde que les IsJITTrackingEnabled qui est complètement indépendant de si oui ou non le code est compilé pour l'optimisation et JIT Optimisation.
Le DebuggableAttribute est présent si vous compiler en mode Release et choisissez DebugOutput à rien d'autre que "none".
Vous devez également définir exactement ce que l'on entend par "Debug" et "Release"...
Voulez-vous dire que l'application est configurée avec l'optimisation du code? Voulez-vous dire que vous pouvez joindre la VS/Débogueur JIT? Voulez-vous dire qu'il génère DebugOutput? Voulez-vous dire qu'il définit la constante DEBUG? N'oubliez pas que vous pouvez conditionnellement rassembler des Méthodes avec le Système.Diagnostics.Conditionnel (le) de l'attribut.
À mon humble avis, quand quelqu'un demande si oui ou non une assemblée est "Debug" ou "Release", il veut dire vraiment si le code est optimisé...
Sooo, en supposant que vous êtes désireux de savoir si le code est JITOptimized, ici est la mise en œuvre correcte:
object[] attribs = ReflectedAssembly.GetCustomAttributes(typeof(DebuggableAttribute),
false);
// If the 'DebuggableAttribute' is not found then it is definitely an OPTIMIZED build
if (attribs.Length > 0)
{
// Just because the 'DebuggableAttribute' is found doesn't necessarily mean
// it's a DEBUG build; we have to check the JIT Optimization flag
// i.e. it could have the "generate PDB" checked but have JIT Optimization enabled
DebuggableAttribute debuggableAttribute = attribs[0] as DebuggableAttribute;
if (debuggableAttribute != null)
{
HasDebuggableAttribute = true;
IsJITOptimized = !debuggableAttribute.IsJITOptimizerDisabled;
BuildType = debuggableAttribute.IsJITOptimizerDisabled ? "Debug" : "Release";
// check for Debug Output "full" or "pdb-only"
DebugOutput = (debuggableAttribute.DebuggingFlags &
DebuggableAttribute.DebuggingModes.Default) !=
DebuggableAttribute.DebuggingModes.None
? "Full" : "pdb-only";
}
}
else
{
IsJITOptimized = true;
BuildType = "Release";
}
Je vous ai fourni cette mise en œuvre sur mon blog:
La seule meilleure façon de le faire est de vérifier la compilation des assemblées de lui-même. Il y a cet outil très utile appelé".NET de l'Assemblée de l'Information " qui se trouve ici par Rotem la Floraison. Après l'installation de cela, il s'associe avec .les fichiers dll pour ouvrir avec lui-même. Après l'installation, vous pouvez simplement double-cliquer sur l'Assemblée ouverte et il va vous donner les détails d'assemblage, comme indiqué dans les captures d'écran ci-dessous. De là, vous pouvez identifier si c'est de débogage compilé ou non.
LinkText: http://www.codeplex.com/AssemblyInformation
Espérons que cela aide..