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 이상
Windows 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.IsWindowsVersionAtLeast, OperatingSystem.IsMacOSVersionAtLeast, System.Runtime.Versioning.SupportedOSPlatformAttribute가 도입되어 Environment.OSVersion이 Windows와 macOS에 일관성 있게 변경되었습니다.

도입된 버전

5.0

Environment.OSVersion을 사용하는 코드를 검토하고 테스트하여 원하는 대로 작동하는지 확인합니다.

영향을 받는 API