【发布时间】:2015-04-14 09:31:27
【问题描述】:
我想知道当我在调试模式和发布模式下构建 WF 应用程序时会发生什么。
假设我已经在发布模式下构建了 WFA。请问
之间的代码#if DEBUG
...code...
#endif
在生成的 .exe 文件中构建?我问这个是因为在调试模式下我有一些我希望保密的机密信息。我不希望任何人对我的应用进行逆向工程以找到该信息。
非常感谢。
【问题讨论】:
我想知道当我在调试模式和发布模式下构建 WF 应用程序时会发生什么。
假设我已经在发布模式下构建了 WFA。请问
之间的代码#if DEBUG
...code...
#endif
在生成的 .exe 文件中构建?我问这个是因为在调试模式下我有一些我希望保密的机密信息。我不希望任何人对我的应用进行逆向工程以找到该信息。
非常感谢。
【问题讨论】:
查看msdn:#if (C# Reference)
C# 编译器使用的预处理语句。当 C# 编译器遇到 #if 指令,最后是 #endif 指令时,它只会在定义了指定符号的情况下编译指令之间的代码。
因此,这意味着如果您在 Release 模式下构建项目,debug sysmbol 未定义,因此其之间的代码不会被执行,也不是发布构建的一部分。
【讨论】:
它不会是已编译应用程序的一部分,会被编译器跳过。您可以在 .net reflector 中验证它(如果您想自己确认一下)
【讨论】:
不,当您构建 release 时,所有块的内容(例如:#if DEBUG)将不会包含在结果代码中。这是设计使然。
【讨论】: