実行中のOS が何であるかを取得する時はSystem.Environment.OSVersion.Platform
を使えそうかと思ってました。
using System; // Windows 10 なら "Win32NT" Console.WriteLine(Environment.OSVersion.Platform);
ところが、これを Mac の .NET Core で取得すると"MacOSX"
ではなく"Unix"
と返ってきます。
それはともかく、MSDNを見ると何とも説明が古臭いです。SilverlightとかXboxとかはまだしも、"Win32S"
っていつの時代だ……私生まれてない。(知らなくてググったら16bitのOSがうんぬんかんぬん)
deprecated が多すぎる。
時代は進んで Blazor なんていうものが出てきて、そもそもそんなものは想定されていない。Blazor WebAssembly (client-side のやつ) でこれを実行するとUnix
と出てきます。自分のことを Unix だと思い込んでいる一般人かな。
代わりにSystem.Runtime.InteropServices.RuntimeInformation.OSDescription
を使います。
using System.Runtime.InteropServices; // Blazor WebAssembly で実行すると "web" Console.WriteLine(RuntimeInformation.OSDescription);
ちゃんと"web"
と出てきました。WebAssembly か否かが取得できました。