OSVersion 在 MONO MacOS 上的Bug?

最近在做一个.NET跨平台的小工具,需要在程序中做了客户端运行在什么操作系统上的判断。

.NET Api提供了 System.Environment.OSVersion  封装,可以获取所在操作系统的信息。

因此我做了个小程序来测试一下各个平台返回的信息。当然,为了跨平台使用了MONO作为中间层进行部署。

我用的版本是 mono 2.6.7

 

 

将编译之后的OSInfoTest.exe分别部署到 MacOS 和 Linux Red Hat 上。

 

MacOS的运行结果:

 MacOS的运行结果

 

Linux的运行结果:

Linux的运行结果

 

如上图红色标记部分,Platform居然都是Unix!

System.Environment.OSVersion.Platform 返回的是一个 PlatformID 的枚举,里面可是定义着MacOSX的哦。

 

一顿查找之后发现这原来是一个MONO的Bug:[Mono-bugs] [Bug 515570]

找到原因了,但是这个Bug还没有被修正,还需要自己来解决这个问题啊:

不过好在可以利用MacOS的控制台信息来进行判断。

 

代码修改一下,加入了 IsRunningMacOS , GetMacOsInfo 两个方法。

一个方法是直接判断现在运行的OS是否是Mac,一个是通过调用Mac控制台获取当前OS版本信息。

 

好,再来运行一下:

修改后MacOS的运行结果

 

比较一下直接在 MacOS 上运行 "sw_vers" 的结果:

sw_vers

 

OK~ 搞定。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值