有没有办法找出是否在未修改程序集的情况下使用TRACE或DEBUG标志编译了程序集?
答案 0 :(得分:6)
唯一最好的方法是检查已编译的程序集本身。 Rotem Bloom发现了一个名为“.NET Assembly Information”的非常有用的工具here。安装它之后,它会自动打开.dll文件。安装完成后,您只需双击装配即可打开它,它将为您提供下面的屏幕工具中显示的装配详细信息。在那里你可以确定它是否是调试 编译与否。
alt text http://ruchitsurati.net/myfiles/asm_info.jpg
(来源:ruchitsurati.net)
答案 1 :(得分:4)
How to Programmatically Detect if an Assembly is Compiled in Debug or Release mode。
答案 2 :(得分:3)
指向IsDebug工具的直接链接以及使用说明。
答案 3 :(得分:2)
static bool IsDebug(){
bool rv = false;
#if DEBUG
rv = true;
#endif
return rv;
}
答案 4 :(得分:1)
可能没有通用方法。但是,您可以从Assert
命名空间中查找对Debug
和System.Diagnostics
的引用。存在这些将表明已设置DEBUG标志。
同样适用于Trace
和TRACE标志。
显然,如果源代码不使用这些命名空间中的类型,这将不起作用。
答案 5 :(得分:1)
上面提到的“IsDebug”应用程序实际上有一个错误,它没有反映正确的DubuggableAttributes。它错误地假设如果DebuggableAttribute存在,那么程序集不是JIT Optimized。我在我的博客上提供了正确的实现: