【问题标题】:Removing code from Release build in .NET从 .NET 中的 Release 版本中删除代码
【发布时间】:2008-12-03 15:05:51
【问题描述】:

我一直在围绕 System.Diagnostics.Debug 的使用进行一些性能测试,似乎所有与静态类 Debug 相关的代码在构建发布配置时都被完全删除。我想知道编译器是如何知道的。也许有一些类或配置属性可以准确地指定该行为。

我正在尝试创建一些我想从 Release 配置中完全删除的调试代码,我想知道我是否可以像 Debug 类那样简单地更改配置参数来删除代码。

【问题讨论】:

    标签: c# debugging


    【解决方案1】:

    您可以将带有字符串“DEBUG”的ConditionalAttribute 属性应用于任何方法,并且对该项目的调用只会出现在 DEBUG 版本中。

    这与使用 #ifdef 方法不同,因为它允许您发布方法以供其他人在其 DEBUG 配置中使用(如 .NET 框架中的 Debug 类方法)。

    【讨论】:

    • 不知道,这可能会有用!
    • 这正是我所希望的,因为它是可定制和可扩展的。
    【解决方案2】:

    Visual Studio 为 Debug 配置定义了一个 DEBUG 常量,您可以使用它来包装您不想在 Release 构建中执行的代码:

    #ifdef DEBUG
      // Your code
    #endif
    

    但是,您也可以使用 Conditional 属性装饰方法,这意味着永远不会为非调试构建调用该方法(该方法和任何调用站点都将从程序集中删除):

    [Conditional("DEBUG")]
    private void MyDebugMethod()
    {
      // Your code
    }
    

    【讨论】:

      【解决方案3】:

      看看preprocessor directives...

      #if DEBUG
          //code
      #endif
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-12
        • 2016-06-02
        • 2019-04-03
        相关资源
        最近更新 更多