Environment.OSVersion で正しいオペレーティング システム バージョンが返される

Environment.OSVersion で、アプリケーションの互換性のために選択される OS などではなく、オペレーティング システム (OS) の実際のバージョンが返されます。

変更の説明

以前のバージョンの .NET では、アプリケーションが Windows 互換モードで実行されている場合、Environment.OSVersion によって、正しくない可能性がある OS バージョンが返されます。 詳細については、GetVersionExA 関数の解説に関する記述を参照してください。 macOS では、基になる Darwin カーネルのバージョンが Environment.OSVersion によって返されます。

.NET 5 以降では、Windows と macOS のオペレーティング システムの実際のバージョンが Environment.OSVersion によって返されます。

次の表に、動作の違いを示します。

以前の .NET バージョン .NET 5+
Windows 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.IsWindowsVersionAtLeastOperatingSystem.IsMacOSVersionAtLeast、および System.Runtime.Versioning.SupportedOSPlatformAttribute の導入により、Windows および macOS で Environment.OSVersion が整合するように変更されました。

導入されたバージョン

5.0

Environment.OSVersion を使用するコードを確認してテストし、確実に期待どおりに動作するようにします。

影響を受ける API