Environment.OSVersion retorna a versão correta do sistema operacional
Environment.OSVersion retorna a versão real do sistema operacional (SO) em vez de, por exemplo, o sistema operacional selecionado para compatibilidade de aplicativos.
Alterar a descrição
Em 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, consulte Observações sobre a função GetVersionExA. No macOS, Environment.OSVersion retorna a versão subjacente do kernel Darwin.
A partir do .NET 5, Environment.OSVersion retorna a versão real do sistema operacional para Windows e macOS.
A tabela a seguir mostra a diferença no comportamento.
Versões anteriores do .NET | .NET 5+ | |
---|---|---|
Windows | 6.2.9200.0 | 10.0.19042.0 |
macOS | 19.6.0.0 | 10.15.7 |
Razão para a 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 sua versão suportada no manifesto do aplicativo e, portanto, obtém a versão padrão suportada do host dotnet. Como resultado, o shim de compatibilidade raramente é significativo para o aplicativo que está sendo executado. Quando o Windows lança uma nova versão e um host dotnet mais antigo ainda está em uso, esses aplicativos podem obter uma versão incorreta do sistema operacional. Retornar a versão real está mais alinhado com as expectativas dos desenvolvedores em relação a essa API.
Com a introdução do OperatingSystem.IsWindowsVersionAtLeast, OperatingSystem.IsMacOSVersionAtLeast, e System.Runtime.Versioning.SupportedOSPlatformAttribute no .NET 5, Environment.OSVersion foi alterado para ser consistente para Windows e macOS.
Versão introduzida
5.0
Ação recomendada
Revise e teste qualquer código usado Environment.OSVersion para garantir que ele se comporte conforme desejado.
APIs afetadas
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários