【发布时间】:2011-04-26 12:54:03
【问题描述】:
如果我在代码中使用#if 指令,我想知道如何编译我的代码。
我想创建我的应用程序的特殊版本(商业演示版),并且我想限制我的应用程序的功能。我宁愿避免混淆,只是不想将我所有的编译代码添加到可执行文件中。我需要解决方案来阻止在反汇编过程中预览我的代码。我可以使用 #if 指令进行变体编译,而不是使用 cmets 来禁用代码部分吗?
【问题讨论】:
标签: c# compilation c-preprocessor
如果我在代码中使用#if 指令,我想知道如何编译我的代码。
我想创建我的应用程序的特殊版本(商业演示版),并且我想限制我的应用程序的功能。我宁愿避免混淆,只是不想将我所有的编译代码添加到可执行文件中。我需要解决方案来阻止在反汇编过程中预览我的代码。我可以使用 #if 指令进行变体编译,而不是使用 cmets 来禁用代码部分吗?
【问题讨论】:
标签: c# compilation c-preprocessor
使用#if 指令就像在c++ 中使用预处理器一样,如果条件尚未满足(在编译时),代码将根本不存在。来自MSDN:
当 C# 编译器遇到 #if 指令,最终由一个
#endif指令,它只会编译指令之间的代码 定义了指定的符号。 与 C 和 C++ 不同,您不能分配 数值到符号; #if C# 中的语句是布尔值,并且只有 测试符号是否已经 定义与否。
【讨论】:
作为@ohadsc 答案的补充:您可以随时检查Reflector 编译器实际生成的内容。
【讨论】: