Environment.OSVersion は、アプリケーションの互換性のために選択されている OS ではなく、オペレーティング システム (OS) の実際のバージョンを返します。
変更の説明
以前の .NET バージョンでは、 Environment.OSVersion は、アプリケーションが Windows 互換モードで実行されている場合に正しくない可能性がある OS バージョンを返します。 詳細については、「 GetVersionExA 関数の解説」を参照してください。 macOS では、 Environment.OSVersion は基になる Darwin カーネル バージョンを返します。
.NET 5 以降では、 Environment.OSVersion は Windows および macOS 用のオペレーティング システムの実際のバージョンを返します。
次の表に、動作の違いを示します。
| 以前の .NET バージョン | .NET 5 以降 | |
|---|---|---|
| ウィンドウズ | 6.2.9200.0 | 10.0.19042.0 |
| macOS | 19.6.0.0 | 10.15.7 |
変更の理由
このプロパティのユーザーは、オペレーティング システムの実際のバージョンを返す必要があります。 ほとんどの .NET アプリは、サポートされているバージョンをアプリケーション マニフェストで指定しないため、dotnet ホストからサポートされている既定のバージョンを取得します。 その結果、実行されているアプリでは互換性 shim はほとんど意味がなくなります。 Windows が新しいバージョンをリリースし、古い dotnet ホストがまだ使用されている場合、これらのアプリの OS バージョンが正しくない可能性があります。 実際のバージョンを返す方が、この API に対する開発者の期待によりインラインになります。
.NET 5 での OperatingSystem.IsWindowsVersionAtLeast、 OperatingSystem.IsMacOSVersionAtLeast、および System.Runtime.Versioning.SupportedOSPlatformAttribute の導入により、 Environment.OSVersion は Windows と macOS で一貫するように変更されました。
導入されたバージョン
5.0
推奨されるアクション
Environment.OSVersionを使用するコードを確認してテストし、必要に応じて動作することを確認します。
影響を受ける API
.NET