【问题标题】:Debug mode c# application调试模式 c# 应用程序
【发布时间】:2015-04-14 09:31:27
【问题描述】:

我想知道当我在调试模式和发布模式下构建 WF 应用程序时会发生什么。

假设我已经在发布模式下构建了 WFA。请问

之间的代码
#if DEBUG
...code...
#endif

在生成的 .exe 文件中构建?我问这个是因为在调试模式下我有一些我希望保密的机密信息。我不希望任何人对我的应用进行逆向工程以找到该信息。

非常感谢。

【问题讨论】:

    标签: c# debugging release


    【解决方案1】:

    查看msdn:#if (C# Reference)

    C# 编译器使用的预处理语句。当 C# 编译器遇到 #if 指令,最后是 #endif 指令时,它只会在定义了指定符号的情况下编译指令之间的代码。

    因此,这意味着如果您在 Release 模式下构建项目,debug sysmbol 未定义,因此其之间的代码不会被执行,也不是发布构建的一部分。

    【讨论】:

      【解决方案2】:

      它不会是已编译应用程序的一部分,会被编译器跳过。您可以在 .net reflector 中验证它(如果您想自己确认一下)

      【讨论】:

        【解决方案3】:

        不,当您构建 release 时,所有块的内容(例如:#if DEBUG)将不会包含在结果代码中。这是设计使然。

        【讨论】:

        • 我只是纠正了一点,它不是通过设计而是 C# 编译器的工作方式,因为编译器使用了预处理指令....但是我这边的 +1
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-19
        • 1970-01-01
        • 2018-06-05
        • 1970-01-01
        • 1970-01-01
        • 2021-07-28
        • 1970-01-01
        相关资源
        最近更新 更多