1

如何确定我的应用程序是否编译为“发布”而不是“调试”?我去了 VS 2008 Project Properties > Build 并将配置从 Debug 设置为 Release,但我注意到没有变化?这是一个 ASP.NET 项目。

4

4 回答 4

4

HttpContext.IsDebuggingEnabled

于 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 回答