Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Environment.OSVersion devuelve la versión real del sistema operativo (SO) en lugar de, por ejemplo, el sistema operativo seleccionado para la compatibilidad de aplicaciones.
Descripción del cambio
En versiones anteriores de .NET, Environment.OSVersion devuelve una versión del sistema operativo que puede ser incorrecta cuando una aplicación se ejecuta en modo de compatibilidad de Windows. Para obtener más información, consulte los comentarios de la función GetVersionExA. En macOS, Environment.OSVersion devuelve la versión subyacente del kernel de Darwin.
A partir de .NET 5, Environment.OSVersion devuelve la versión real del sistema operativo para Windows y macOS.
En la tabla siguiente se muestra la diferencia en el comportamiento.
Versiones anteriores de .NET | .NET 5+ | |
---|---|---|
Windows | 6.2.9200.0 | 10.0.19042.0 |
macOS | 19.6.0.0 | 10.15.7 |
Motivo del cambio
Los usuarios de esta propiedad esperan que devuelva la versión real del sistema operativo. La mayoría de las aplicaciones .NET no especifican su versión compatible en su manifiesto de aplicación y, por tanto, obtienen la versión admitida predeterminada del host dotnet. Como resultado, la corrección de compatibilidad no suele ser significativa para la aplicación que se está ejecutando. Cuando Windows publica una nueva versión y un host dotnet anterior todavía está en uso, estas aplicaciones pueden obtener una versión incorrecta del sistema operativo. La devolución de la versión real está más alineada con las expectativas de los desarrolladores de esta API.
Con la introducción de OperatingSystem.IsWindowsVersionAtLeast, OperatingSystem.IsMacOSVersionAtLeasty System.Runtime.Versioning.SupportedOSPlatformAttribute en .NET 5, Environment.OSVersion se cambió para ser coherente para Windows y macOS.
Versión introducida
5.0
Acción recomendada
Revise y pruebe cualquier código que use Environment.OSVersion para asegurarse de que se comporta según lo deseado.