Environment.OSVersion возвращает правильную версию операционной системы

Environment.OSVersion возвращает фактическую версию операционной системы (ОС), а не, например, ту ОС, которая выбрана для совместимости приложений.

Описание изменения

В предыдущих версиях .NET Environment.OSVersion возвращает версию ОС, которая может быть неверной, если приложение работает в режиме совместимости Windows. Дополнительные сведения см. в примечаниях к функции GetVersionExA. В macOS Environment.OSVersion возвращает базовую версию ядра Darwin.

Начиная с .NET 5 Environment.OSVersion возвращает фактическую версию операционной системы для Windows и macOS.

В следующей таблице приведены различия в поведении.

Предыдущие версии .NET .NET 5.+
Windows 6.2.9200.0 10.0.19042.0
macOS 19.6.0.0 10.15.7

Причина изменения

Пользователи этого свойства предполагают, что оно будет возвращать фактическую версию операционной системы. Большинство приложений .NET не указывают поддерживаемую версию в манифесте приложения и поэтому получают поддерживаемую по умолчанию версию из узла dotnet. В результате оболочка совместимости редко применяется для работающего приложения. Когда Windows выпускает новую версию, а более старый узел dotnet по-прежнему используется, эти приложения могут получить неверную версию ОС. Возврат фактической версии более соответствует ожиданиям разработчиков этого API.

С появлением OperatingSystem.IsWindowsVersionAtLeast, OperatingSystem.IsMacOSVersionAtLeast и System.Runtime.Versioning.SupportedOSPlatformAttribute в .NET 5 Environment.OSVersion были изменены для согласованности с Windows и macOS.

Представленные версии

5,0

Проверьте и протестируйте код, который использует Environment.OSVersion, чтобы убедиться, что он ведет себя должным образом.

Затронутые API