「Xamarin.MacでOSのバージョンを取得する」の版間の差分

ページの作成:「==概要== Xamarin.Macに存在しない標準ライブラリをCocoa BindingP/Invoke)で叩く際にはOSのバージョンによりAPIがあっ...」
 
Administrator がページ「Xamarin.Mac/OSのバージョンを取得する」を「Xamarin.MacでOSのバージョンを取得する」に移動しました
 
(3人の利用者による、間の3版が非表示)
1行目: 1行目:
==概要==
==概要==
[[Xamarin.Mac]]に存在しない標準ライブラリを[[Cocoa Binding]]([[P/Invoke]])で叩く際には[[OS]]のバージョンにより[[API]]があったりなかったりして[[条件分岐]]に迫られる。
[[Xamarin.Mac]]に存在しない標準ライブラリを[[P/Invoke]]で叩く際には[[OS]]のバージョンにより[[API]]があったりなかったりして[[条件分岐]]に迫られることが多い。
基本的に[[Mac OS X]]は[[Windows]]のように古いAPIも継続して使えるなどという軟弱な仕様ではない。
基本的に[[MacOS]]は[[Windows]]のように古いAPIも継続して使えるなどという軟弱な仕様ではない。
良くも悪くも代謝を施し市場活性化のためにバッサリ切り捨てである。
MacOSは良くも悪くも代謝を施し市場活性化のためにバッサリ切り捨てが頻繁に起きる。
そのためバージョンを取得する手段が重要になってくる。


==実装:SystemVersion.plistから抜く==
==実装:SystemVersion.plistから抜く==
SystemVersion.plistというファイルから抜けるようだ。
/System/Library/CoreServices/SystemVersion.plistというファイルから抜けるようだ。
<source lang="csharp">
<source lang="csharp">
            var version = NSDictionary.FromFile(@"/System/Library/CoreServices/SystemVersion.plist");
var version = NSDictionary.FromFile(@"/System/Library/CoreServices/SystemVersion.plist");
            Console.WriteLine(version);
Console.WriteLine(version);
</source>
</source>


22行目: 23行目:
</source>
</source>


XamarinのNSDictionaryはIDictionaryを実装しているので以下のように手軽にアクセスできる。
[[Xamarin]]のNSDictionaryはIDictionaryを実装しているので以下のように手軽にアクセスできる。
<source lang="csharp">
<source lang="csharp">
            Console.WriteLine(version["ProductVersion"]);
Console.WriteLine(version["ProductVersion"]);
</source>
</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>


==実装:NSProcessInfoを使う==
==実装:NSProcessInfoを使う==
32行目: 40行目:
[[Mac OS X 10.9]]([[Mavericks]])以下は切り捨てるというのであればこの方法が推奨となるようだ。
[[Mac OS X 10.9]]([[Mavericks]])以下は切り捨てるというのであればこの方法が推奨となるようだ。
<source lang="csharp">
<source lang="csharp">
            var version = NSProcessInfo.ProcessInfo.OperatingSystemVersion;
var version = NSProcessInfo.ProcessInfo.OperatingSystemVersion;
            Console.WriteLine(version);
Console.WriteLine(version);
</source>
</source>


39行目: 47行目:
*[[Xamarin.Mac/アクセシビリティの許可の有無を取得する]]
*[[Xamarin.Mac/アクセシビリティの許可の有無を取得する]]
*[[Xamarin.Mac/Global Event Monitorでキー入力を監視する]]
*[[Xamarin.Mac/Global Event Monitorでキー入力を監視する]]
==参考文献==
{{reflist}}
{{stub}}


[[category:Xamarin.Mac]]
[[category:Xamarin.Mac]]
[[category:MonoMac]]
[[category:MonoMac]]