写在前面

  • 起因:我在回顾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. 四、配置docker MySQL 修改编码,支持 utf8mb4

    docker 获取 mysql 5.7 版本的镜像. 将docker 里面的 3306 端口映射出来,否则虚拟机外,可能无法访问, 创建 docker 镜像 docker run -itd -p 33 ...

  2. 集成GIT仓库

    集成GIT仓库 jgit - java实现git操作 一个 Java 程序中使用 Git ,有一个功能齐全的 Git 库,那就是 JGit . JGit 是一个用 Java 写成的功能相对健全的 Gi ...

  3. Eclipse创建maven-web项目时找不到archetype解决方法

    转:https://blog.csdn.net/sunjinjuan/article/details/82943488

  4. iOS证书签名

    苹果官方有一对密钥,即私钥和公钥,私钥在苹果后台,公钥在iOS系统中(如iPhone手机在出厂后,其中就保存有苹果官方的公钥):在Mac系统打包app时也会生成一对密钥(私钥.公钥),并保存在钥匙串中 ...

  5. 一些test短代码

    #include <stdio.h> int main(){ char ray_tx_pwr[2][3]={{1,2,3},{4,5,6}}; int i = 0; printf(&quo ...

  6. WPF侧边导航栏实现

    一.先看效果 1 添加Nuget库 站长使用.Net Core 3.1创建的WPF工程,创建"DropDownMenu"解决方案后,需要添加两个Nuget库:MaterialDes ...

  7. python中利用openpyxl、xlsxwriter库操作Excel

    删除Excel指定行或列 使用openpyxl库操作Excel,可以删除指定的列 import openpyxl def excel_delete(fp): wb = openpyxl.load_wo ...

  8. 【Python】Python多进程练习

    1,进程启动 通过Process方法启动,通过下面的代码执行结果,可以发现,开启的进程与WHILE循环语句会同时进行. 为什么呢?因为都是启动了进程在运行程序. from time import sl ...

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

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

  10. Java-JSP页面实现简单登录退出(菜鸟一枚、仅供参考)

    1.JSP页面代码 <%@ page language="java" contentType="text/html; charset=UTF-8" pag ...