写在前面
- 起因:我在回顾LuaFramework_UGUI(作者Jarjin Lee)代码时,看到了C#代码中的条件编译符号,比如下图的ASYNC_MODE。虽然字面上知道是什么意思,但我对VS的条件编译符号其实不太清楚,所以查了下资料,写下此博文作为记录。
- 与正文无关,但或许会用到的参考资料:
VS条件编译符号
在VS里
怎么加
- 以VS工程TestMisc为例,打开项目属性面板,如下图(项目->TestMisc属性)。
打开项目属性面板
- 在项目属性面板的“生成”页下,选择条件编译符号所在“配置”,添加或编辑要用的条件编译符号,修改完按Ctrl+s保存。如下图,我在名为“Debug”的配置下,新加了一个条件编译符号aaa。如果切换到其他“配置”(比如切换到“Release”配置),是不能看到条件编译符号aaa的。
怎么用
- 作为对比,我在配置管理器中新建了一个名为“Local”的配置,具体操作如下:
打开配置管理器
新建配置
新配置起名为Local
- 按前面的方法,我在Local配置下新加了一个名为bbb的条件编译符号。
- 在主程序里,我加入以下测试代码,测试在Local配置下,和在Debug配置下的打印情况。
static void Main(string[] args) { #if aaa Console.WriteLine("this is aaa"); #endif #if bbb Console.WriteLine("this is bbb"); #endif Console.ReadLine(); }
测试结果:在Debug配置下,只能看到aaa的打印;在Local配置下,只能看到bbb的打印。
Debug配置下,只能看到aaa的打印
Local配置下,只能看到bbb的打印
- 显然,条件编译符号只能在指定配置下使用,它们的触发条件都是true(就是都能用的意思)。
在Unity里
怎么加
- 在Unity里,如果按上面操作来加条件编译符号是无效的,再次打开VS会发现恢复默认值。官网有介绍加在哪里,即PlayerSettings面板Scripting Define Symbols栏,即下图橙框处,这里我加的是ZZZ。相关代码是PlayerSettings.SetScriptingDefineSymbolsForGroup和PlayerSettings.GetScriptingDefineSymbolsForGroup。
怎么用
- 加完即可在代码中使用条件编译符号。