加载的程序集是DEBUG还是RELEASE?

时间:2014-05-27 05:52:48

标签: c# debugging configuration release

如何确定加载的程序集是DEBUG还是RELEASE版本?

是的,我可以使用这样的方法:

public static bool IsDebugVersion() {
#if DEBUG
    return true;
#else
    return false;
#endif
}

但这仅适用于我自己的代码。 我需要在运行时检查(对于第三方程序集),如下所示:

public static bool IsDebugVersion(Assembly assembly) {
    ???
}

1 个答案:

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