10

有什么方法可以在不修改程序集的情况下找出程序集是否已使用 TRACE 或 DEBUG 标志集进行编译?

4

5 回答 5

6

唯一最好的方法是检查编译的程序集本身。Rotem Bloom在这里找到了一个非常有用的工具,称为“.NET 程序集信息” 。安装后,它会关联 .dll 文件以自行打开。安装后,您只需双击程序集即可打开它,它将为您提供程序集详细信息,如下面的屏幕商店中所示。在那里您可以确定它是否已调试编译。

替代文字 http://ruchitsurati.net/myfiles/asm_info.jpg

替代文字
(来源:ruchitsurati.net

链接文本:http : //www.codeplex.com/AssemblyInformation

于 2009-04-28T17:19:49.547 回答
4

如何以编程方式检测程序集是否在调试或发布模式下编译,来自 Scott Hanselman。

于 2009-03-10T11:48:14.993 回答
3
static bool IsDebug(){
 bool rv = false;
 #if DEBUG
 rv = true;
 #endif
 return rv;
}
于 2009-03-10T11:09:41.700 回答
1

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

TraceTRACE 标志也是如此。

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

于 2009-03-10T11:19:56.777 回答
1

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

如何判断程序集是调试还是发布

于 2011-12-08T18:39:16.533 回答