如何确定我的应用程序是否编译为“发布”而不是“调试”?我去了 VS 2008 Project Properties > Build 并将配置从 Debug 设置为 Release,但我注意到没有变化?这是一个 ASP.NET 项目。
问问题
3904 次
4 回答
4
于 2009-05-21T04:22:27.647 回答
3
如果你想知道 dll 是否是在调试模式下构建的,带有调试属性,那么你最好的选择是反射。
取自“如何判断现有程序集是调试还是发布”:
Assembly assembly = Assembly.GetAssembly(GetType());
bool debug = false;
foreach (var attribute in assembly.GetCustomAttributes(false)){
if (attribute.GetType() == typeof(System.Diagnostics.DebuggableAttribute)){
if (((System.Diagnostics.DebuggableAttribute)attribute)
.IsJITTrackingEnabled){
debug = true;
break;
}
}
}
这将获取调用该代码的程序集(实际上是本身),然后如果程序集是在调试模式下编译的,则将调试布尔值设置为 true,否则为 false。
这可以很容易地放入控制台应用程序(如链接示例中),然后传入要检查的 dll/exe 的路径。您将从如下路径加载程序集:
Assembly assembly =
Assembly.LoadFile(System.IO.Path.GetFullPath(m_DllPath.Text));
于 2009-05-21T14:58:43.790 回答
1
对于 Web.config 中的调试将设置为 true,但是您实际上也可以在发布应用程序中设置它。
然而,在调试中设置了 DEBUG 之类的定义,因此很容易做到:
bool is_debug;
#ifdef DEBUG
is_debug = true;
#else
is_debug = false;
#endif
于 2009-05-20T21:56:29.333 回答
0
您需要寻找的不仅仅是 IsJITTrackingEnabled - 这完全独立于代码是否为优化和 JIT 优化而编译。
此外,如果您在发布模式下编译并将 DebugOutput 选择为“none”以外的任何内容,则会出现 DebuggableAttribute。
请参考我的帖子: 如何判断程序集是调试版还是发布版以及 如何识别 DLL 是调试版还是发布版(在 .NET 中)
于 2012-06-21T13:43:14.830 回答