C#利用预处理指令进行条件编译

Unity引擎使用Mono虚拟机作为它的脚本处理环境,因此大部分使用C#编写的程序可以直接移植到Unity中,使用Unity .net Class Libraries编程框架对它进行编译,就可直接在Unity中使用。
但有Mono对C#的编译执行与微软并不是完全一样,例如在调用本地语言时,VS编译器需要为方法添加特性标签[DllImport("Win32Project1.dll")]来寻找寻找本地dll文件Win32Project1.dll,而Mono则需要添加特性[DllImport("Win32Project1")],根据操作系统不同寻找Win32Project1.dll或libWin32Project1.dylib或.so文件。
对于这种情况,我们并不需要为VS和MONO各准备一套代码,.NET为用户提供了一种预处理指令,用法类似于C/C++的宏定义,但.NET预处理指令只能提供简单的标签定义,以进行条件编译。
如上述例子,我们只需要在代码中插入

#if MS_BUILD
        [DllImport("Win32Project1.dll")]
#else
        [DllImport("Win32Project1")]
#endif

并在VS中打开C#项目->属性->Build,并在Conditional compilation symbols加入MS_BUILD标签,便可实现条件编译

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值