如何确定是否使用TRACE或DEBUG标志编译.NET程序集

时间:2009-03-10 11:01:02

标签: .net assemblies trace release-mode

有没有办法找出是否在未修改程序集的情况下使用TRACE或DEBUG标志编译了程序集?

6 个答案:

答案 0 :(得分:6)

唯一最好的方法是检查已编译的程序集本身。 Rotem Bloom发现了一个名为“.NET Assembly Information”的非常有用的工具here。安装它之后,它会自动打开.dll文件。安装完成后,您只需双击装配即可打开它,它将为您提供下面的屏幕工具中显示的装配详细信息。在那里你可以确定它是否是调试 编译与否。

alt text http://ruchitsurati.net/myfiles/asm_info.jpg

alt text
(来源:ruchitsurati.net

LinkText:http://www.codeplex.com/AssemblyInformation

答案 1 :(得分:4)

答案 2 :(得分:3)

指向IsDebug工具的直接链接以及使用说明。

答案 3 :(得分:2)

static bool IsDebug(){
 bool rv = false;
 #if DEBUG
 rv = true;
 #endif
 return rv;
}

答案 4 :(得分:1)

可能没有通用方法。但是,您可以从Assert命名空间中查找对DebugSystem.Diagnostics的引用。存在这些将表明已设置DEBUG标志。

同样适用于Trace和TRACE标志。

显然,如果源代码不使用这些命名空间中的类型,这将不起作用。

答案 5 :(得分:1)

上面提到的“IsDebug”应用程序实际上有一个错误,它没有反映正确的DubuggableAttributes。它错误地假设如果DebuggableAttribute存在,那么程序集不是JIT Optimized。我在我的博客上提供了正确的实现:

<强> How to Tell if an Assembly is Debug or Release