【问题标题】:How to execute code only in debug mode in ASP.NET如何在 ASP.NET 中仅在调试模式下执行代码
【发布时间】:2009-11-14 16:32:09
【问题描述】:

我有一个 ASP.NET Web 应用程序,并且我有一些我只想在调试版本中执行的代码。如何做到这一点?

【问题讨论】:

    标签: c# asp.net debugging


    【解决方案1】:
    #if DEBUG
    your code
    #endif
    

    您还可以将ConditionalAttribute 添加到仅在您以调试模式构建时才执行的方法:

    [Conditional("DEBUG")]
    void SomeMethod()
    {
    }
    

    【讨论】:

    • 它怎么知道它在调试,它是从 web.config 中获取的吗?
    • @Omu:我添加了指向 MSDN 的链接 - 它解释了编译器如何选择性地删除对标记为 Conditional 的方法的调用。
    • 您可以在发布或调试之间选择构建模式。 #if 和 Conditional 在编译时使用。更多细节:bytes.com/topic/c-sharp/answers/…。你会在 google 中找到很多有关的信息。
    • @Omu:#if DEBUGConditional("DEBUG") 中的 DEBUG 被定义为 C# 编译器的命令行开关。
    • 请记住,以上所有内容都发生在编译时,基于构建配置。如果您需要签入 Razor 脚本、内联代码,或者您需要在更改 web.config 中的“调试”时更改行为,那么您应该使用@dtb 的答案。
    【解决方案2】:

    Detecting ASP.NET Debug mode

    if (HttpContext.Current.IsDebuggingEnabled)
    {
        // this is executed only in the debug version
    }
    

    来自MSDN

    HttpContext.IsDebuggingEnabled 属性

    获取一个值,指示当前 HTTP 请求是否处于调试模式。

    【讨论】:

    • 在 MVC 5 中只是 if (HttpContext.IsDebuggingEnabled)
    【解决方案3】:

    我在基本页面中声明了一个属性,或者您可以在应用程序中的任何静态类中声明它:

        public static bool IsDebug
        {
            get
            {
                bool debug = false;
    #if DEBUG
                debug = true;
    #endif
                return debug;
            }
        }
    

    然后实现你的愿望:

        if (IsDebug)
        {
            //Your code
        }
        else 
        {
            //not debug mode
        }
    

    【讨论】:

    • 我猜你的意思是#if DEBUG debug = true; #endif
    • debug 默认会初始化为 false,所以你的 IsDebug 方法总是返回 false,你是不是漏掉了 bool debug = true?
    • 局部变量没有初始化为任何东西,因此当前版本不会在发布模式下编译。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多