写在前面

  • 起因:我在回顾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条件编译符号的更多相关文章

  1. c#定义全局条件编译符号

    在"工程"上单机右键,"属性"--->"生成"--->"条件编译符号"后边的输入框中,输入自定义的条件编译变 ...

  2. 在 Roslyn 分析语法树时添加条件编译符号的支持

    我们在代码中会写 #if DEBUG 或者 [Conditional("DEBUG")] 来使用已经定义好的条件编译符号.而定义条件编译符号可以在代码中使用 #define WAL ...

  3. .NET/C# 项目如何优雅地设置条件编译符号?

    条件编译符号指的是 Conditional Compilation Symbols.你可以在 Visual Studio 的项目属性中设置,也可以直接在项目文件中写入 DefineConstants ...

  4. C# 中的#if、#elif、#else、#endif等条件编译符号 (转载)

    这些是C#中的条件编译符号.这些指令我在项目中遇到过,查过网络,问过人(当然,既不认识大牛,也不认识小牛,所以没什么收获).今天翻看一本资料,有提到这个方面的东西,所以写下来和能看到这篇文章的人一起学 ...

  5. C# 中的#if、#elif、#else、#endif等条件编译符号

    C#编译器遇到一个由#if和#endif包围起来的语句块时,会检查#if后面的符号是否已经被定义了,如果已经被定义,那么才会编译语句块之间的代码.而定义一个可以被#if测试的符号需要事先用#defin ...

  6. 把现有Unity3d游戏向Windows Phone 8.1移植(基础)

    最近在将一款现有的游戏向Windows Phone平台移植,暂时完成了一个小阶段,做一个总结. 开发环境: Windows 8.1 系统及以上,愿意的话,用Windows 10 尝鲜也可以. 微软账号 ...

  7. 使用C#的Conditional特性与Unity编辑器宏命令做条件编译

    概要 在传统的C#项目中,用Conditional特性做条件编译时,需要在Visual Studio中项目的属性里添加上条件编译符号,用法参考这篇文章. 而在Unity项目中,条件编译符号需要在Uni ...

  8. C# 条件编译

    本文导读: C#的预处理器指令从来不会转化为可执行代码的命令,但是会影响编译过程的各个方面,常用的预处理器指令有#define.#undef.#if,#elif,#else和#endif等等,下面介绍 ...

  9. C#-#define条件编译

    本文导读: C#的预处理器指令从来不会转化为可执行代码的命令,但是会影响编译过程的各个方面,常用的预处理器指令有#define.#undef.#if,#elif,#else和#endif等等,下面介绍 ...

  10. C# 条件编译备忘

    第一步:配置管理器中新建解决方案配置 第二步:定义条件编译符号: 第三步:在代码中使用自定义的条件编译 #if CustomDebug Console.WriteLine("dsads&qu ...

随机推荐

  1. 【stm32】的PWM外设|学习笔记

    PWM简单理解就是生成PWM方波,主要可控的参数有周期,占空比,极性. stm32内置PWM生成器,我想应该是用TIM加比较器来实现的吧,那么如何实现stm32输出PWM波呢? 一.得知道那些IO可以 ...

  2. spring注解SQL注意事项

    目前有两个类:机构.职员 package com.common.vo; public class Org{ public long id; public String name; public Str ...

  3. requests断点续传功能

    requests取消ssl验证会出现告警InsecureRequestWarning,取消告警如下: import urllib3urllib3.disable_warnings(urllib3.ex ...

  4. vue子组件为父组件属性写值

    父组件调用子组件代码(关键字sync): <importModel :visible.sync="dialogModelVisible"></importMode ...

  5. py打包工具

    库地址: auto-py-to-exe https://pypi.org/project/auto-py-to-exe/ Gooey https://pypi.org/project/Gooey/ 为 ...

  6. mongoDB日常操作02

    db.TABLE_NAME.find({<query>})//普通查询db.TABLE_NAME.find({<query>},{'_id':0,'f1':1,'f2':1}) ...

  7. Android 将函数放到主线程运行

    有时候,app会检测加密函数是否在主线程运行,为了逃避这种检测,要将函数放到主线程运行 Class<?> aClass = RposedHelpers.findClass("co ...

  8. Ubuntu 20.04 部署Prmoetheus+grafana+mysql+mysqld_exporter+node_exporter

    Prometheus简介 Prometheus是一个功能强大的开源监控系统,可从您的服务中收集指标并将其存储在时间序列数据库中.它通过Grafana等工具提供多维数据模型,灵活的查询语言和多样化的可视 ...

  9. tzoj:3613 突破包围

    http://www.tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=3613 算出两两之间min距离,然后从起点开 ...

  10. 实验:spring-boot整合mybatis-plus实现分页查询的功能

    1.建立基于sping-boot的javaweb工程(java1.8) 按结构建立包 2.POM.XML添加支持mybatis-plus,sql,lombok <!--mybatis-plus的 ...