如何确定加载的程序集是DEBUG还是RELEASE版本?
是的,我可以使用这样的方法:
public static bool IsDebugVersion() {
#if DEBUG
return true;
#else
return false;
#endif
}
但这仅适用于我自己的代码。 我需要在运行时检查(对于第三方程序集),如下所示:
public static bool IsDebugVersion(Assembly assembly) {
???
}
答案 0 :(得分:2)
使用Assembly.GetCustomAttributes(bool)
获取属性列表,然后查找DebuggableAttribute
,然后如果找到,请查看属性IsJITTrackingEnabled
是否设置为true
:
public static bool IsAssemblyDebugBuild(Assembly assembly)
{
foreach (var attribute in assembly.GetCustomAttributes(false))
{
var debuggableAttribute = attribute as DebuggableAttribute;
if(debuggableAttribute != null)
{
return debuggableAttribute.IsJITTrackingEnabled;
}
}
return false;
}
以上摘自here。
替代使用LINQ:
public static bool IsAssemblyDebugBuild(Assembly assembly)
{
return assembly.GetCustomAttributes(false)
.OfType<DebuggableAttribute>()
.Any(i => i.IsJITTrackingEnabled);
}