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

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.IsWindowsVersionAtLeastOperatingSystem.IsMacOSVersionAtLeast、および System.Runtime.Versioning.SupportedOSPlatformAttribute の導入により、 Environment.OSVersion は Windows と macOS で一貫するように変更されました。

導入されたバージョン

5.0

Environment.OSVersionを使用するコードを確認してテストし、必要に応じて動作することを確認します。

影響を受ける API