Environment.OSVersion retorna a versão correta do sistema operacional
Environment.OSVersion retorna a versão real do SO (sistema operacional) em vez de, por exemplo, o SO selecionado para compatibilidade do aplicativo.
Descrição das alterações
Nas versões anteriores do .NET, Environment.OSVersion retorna uma versão do sistema operacional que pode estar incorreta quando um aplicativo é executado no modo de compatibilidade do Windows. Para obter mais informações, confira Comentários sobre a função GetVersionExA. No macOS, Environment.OSVersion retorna a versão subjacente do kernel do Darwin.
Do .NET 5 em diante, Environment.OSVersion retorna a versão real do sistema operacional Windows e macOS.
A tabela a seguir mostra a diferença no comportamento.
Versões anteriores do .NET | .NET 5 e posteriores | |
---|---|---|
Windows | 6.2.9200.0 | 10.0.19042.0 |
macOS | 19.6.0.0 | 10.15.7 |
Motivo da alteração
Os usuários dessa propriedade esperam que ela retorne a versão real do sistema operacional. A maioria dos aplicativos .NET não especifica a versão com suporte no manifesto do aplicativo e, portanto, obtém a versão com suporte padrão do host do dotnet. Como resultado, o shim de compatibilidade é pouco significativo para o aplicativo em execução. Quando o Windows lança uma nova versão e um host do dotnet mais antigo ainda está em uso, esses aplicativos podem obter uma versão incorreta do sistema operacional. O retorno da versão real está mais alinhado às expectativas dos desenvolvedores quanto a essa API.
Com a introdução de OperatingSystem.IsWindowsVersionAtLeast, OperatingSystem.IsMacOSVersionAtLeast e System.Runtime.Versioning.SupportedOSPlatformAttribute no .NET 5, Environment.OSVersion foi alterado para ser consistente no Windows e no macOS.
Versão introduzida
5,0
Ação recomendada
Examine e teste os códigos que usam Environment.OSVersion para garantir que ele se comporte conforme o desejado.
APIs afetadas
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de