メインメニューを開く

差分

Xamarin.MacでOSのバージョンを取得する

22 バイト除去, 2019年12月25日 (水) 08:07
編集の要約なし
==概要==
[[Xamarin.Mac]]に存在しない標準ライブラリを[[P/Invoke]]で叩く際には[[OS]]のバージョンにより[[API]]があったりなかったりして[[条件分岐]]に迫られることが多い。
基本的に[[Mac OS XMacOS]]は[[Windows]]のように古いAPIも継続して使えるなどという軟弱な仕様ではない。良くも悪くも代謝を施し市場活性化のためにバッサリ切り捨てである。MacOSは良くも悪くも代謝を施し市場活性化のためにバッサリ切り捨てが頻繁に起きる。そのためバージョンを取得する手段が重要になってくる。
==実装:SystemVersion.plistから抜く==
/System/Library/CoreServices/SystemVersion.plistというファイルから抜けるようだ。
<source lang="csharp">
var version = NSDictionary.FromFile(@"/System/Library/CoreServices/SystemVersion.plist"); Console.WriteLine(version);
</source>
[[Xamarin]]のNSDictionaryはIDictionaryを実装しているので以下のように手軽にアクセスできる。
<source lang="csharp">
Console.WriteLine(version["ProductVersion"]);
</source>
[[文字列]]では扱いにくい場合は[[.NET]]標準のVersionクラスを使えばパースも簡単にできる。
<source lang="csharp">
var v = new Version(version["ProductVersion"].ToString()); Console.WriteLine(v.Major); Console.WriteLine(v.Minor); Console.WriteLine(v.Build);
</source>
[[Mac OS X 10.9]]([[Mavericks]])以下は切り捨てるというのであればこの方法が推奨となるようだ。
<source lang="csharp">
var version = NSProcessInfo.ProcessInfo.OperatingSystemVersion; Console.WriteLine(version);
</source>
*[[Xamarin.Mac/アクセシビリティの許可の有無を取得する]]
*[[Xamarin.Mac/Global Event Monitorでキー入力を監視する]]
 
==参考文献==
{{reflist}}
 
{{stub}}
[[category:Xamarin.Mac]]
[[category:MonoMac]]