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

问题描述 投票:10回答:6

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

.net assemblies trace release-mode
6个回答
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



3
投票

直接链接到IsDebug工具,以及使用说明。


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

1
投票

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

同样适用于Trace和TRACE旗帜。

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


1
投票

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

How to Tell if an Assembly is Debug or Release

© www.soinside.com 2019 - 2024. All rights reserved.