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

提供: MonoBook
2015年10月15日 (木) 01:58時点における153.220.4.222 (トーク)による版 (ページの作成:「==概要== Xamarin.Macに存在しない標準ライブラリをCocoa BindingP/Invoke)で叩く際にはOSのバージョンによりAPIがあっ...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

概要

Xamarin.Macに存在しない標準ライブラリをCocoa BindingP/Invoke)で叩く際にはOSのバージョンによりAPIがあったりなかったりして条件分岐に迫られる。 基本的にMac OS XWindowsのように古いAPIも継続して使えるなどという軟弱な仕様ではない。 良くも悪くも代謝を施し市場活性化のためにバッサリ切り捨てである。

実装:SystemVersion.plistから抜く

SystemVersion.plistというファイルから抜けるようだ。

            var version = NSDictionary.FromFile(@"/System/Library/CoreServices/SystemVersion.plist");
            Console.WriteLine(version);

上記で取得したNSDictionaryの中身は以下のような感じになっている。

{
    ProductBuildVersion = 14F27;
    ProductCopyright = "1983-2015 Apple Inc.";
    ProductName = "Mac OS X";
    ProductUserVisibleVersion = "10.10.5";
    ProductVersion = "10.10.5";
}

XamarinのNSDictionaryはIDictionaryを実装しているので以下のように手軽にアクセスできる。

            Console.WriteLine(version["ProductVersion"]);


実装:NSProcessInfoを使う

NSProcessInfoからバージョン情報を取得する方法はMac OS X 10.10Yosemite)以上でしか使えないが、iOSでも共通で使えるという利点がある。 Mac OS X 10.9Mavericks)以下は切り捨てるというのであればこの方法が推奨となるようだ。

            var version = NSProcessInfo.ProcessInfo.OperatingSystemVersion;
            Console.WriteLine(version);

関連項目

参考文献