2010-10-17 95 views
1

我不知道如何编译我的代码,如果我在代码中使用#if指令。 我想创建我的应用程序(商业演示版)的特殊版本,我想限制我的应用程序的功能。我宁愿避免混淆,只是不想将所有编译的代码添加到可执行文件。我需要解决方案抵制在反汇编过程中预览我的代码。我可以使用#if指令的变种编译而不是使禁用部分代码注释?如何C#编译的#if预处理指令代码?

回答

6

使用#if指令就像在C++中使用预处理器一样,如果条件未满足(在编译时间内),代码将不会存在。从MSDN

当C#编译器遇到的#if 指令,最终接着是 #endif指令时,它将只编译如果 指定的符号被定义的指令之间的代码。与C和C++不同,不能将 数值指定给符号; C#中的#if 语句是布尔值,并且只有 测试符号是否已被定义为 。

+1

我假设你的意思是“预处理器”而不是“预编译”。的#if在C++中的预处理器仅仅意味着文本的块被传递给真实的编译器,如果条件没有得到满足,即编译器不连看到里面的#if的代码,如果该条件未被满足之前以文本编辑了。 – 2010-10-17 08:40:06

+0

你是对的,谢谢 – 2010-10-17 08:40:55

2

作为@ ohadsc回答的补充:您总是可以使用Reflector来检查编译器实际生成的内容。