다음을 통해 공유


OSPlatform 특성이 제거되었거나 특성 이름이 바뀜

.NET 5 미리 보기 8에 도입된 MinimumOSPlatformAttribute, RemovedInOSPlatformAttribute, ObsoletedInOSPlatformAttribute 특성은 제거되었거나 그 이름이 바뀌었습니다.

변경 내용 설명

.NET 5 미리 보기 8에서는 System.Runtime.Versioning 네임스페이스에 다음과 같은 특성을 도입했습니다.

  • MinimumOSPlatformAttribute
  • RemovedInOSPlatformAttribute
  • ObsoletedInOSPlatformAttribute

.NET 5 미리 보기 8에서 프로젝트가 net5.0-windows 같은 대상 프레임워크 모니커를 사용하여 OS별 .NET 5 버전을 대상으로 하는 경우 빌드는 어셈블리 수준 System.Runtime.Versioning.MinimumOSPlatformAttribute 특성을 추가합니다.

.NET 5 RC1에서는 ObsoletedInOSPlatformAttribute가 제거되었고 MinimumOSPlatformAttributeRemovedInOSPlatformAttribute의 이름이 다음과 같이 바뀌었습니다.

미리 보기 8 이름 RC1 이상 이름
MinimumOSPlatformAttribute SupportedOSPlatformAttribute
RemovedInOSPlatformAttribute UnsupportedOSPlatformAttribute

.NET 5 RC1 이상에서 프로젝트가 net5.0-windows 같은 대상 프레임워크 모니커를 사용하여 OS별 .NET 5 버전을 대상으로 하는 경우 빌드는 어셈블리 수준 SupportedOSPlatformAttribute 특성을 추가합니다.

변경 이유

.NET 5 미리 보기 8에는 API에 지원되는 플랫폼을 지정하는 특성이 System.Runtime.Versioning에 도입되었습니다. 이 특성은 이러한 API를 지원하지 않는 플랫폼에서 플랫폼별 API가 사용되는 경우 플랫폼 호환성 분석기에서 빌드 경고를 생성하는 데 사용됩니다.

.NET 5 RC1의 경우 플랫폼을 제외하는 기능이 플랫폼 호환성 분석기에 더 추가되었습니다. 이 기능을 통해 API가 OS 플랫폼에서 완전히 지원되지 않는 것으로 표시될 수 있습니다. 이 기능으로 인해 더 적절한 이름을 사용하는 등 특성을 변경하게 되었습니다. ObsoletedInOSPlatformAttribute는 더 이상 필요하지 않아 제거되었습니다.

도입된 버전

5.0 RC1

해당 변경으로 인해 프로젝트 대상을 .NET 5 미리 보기 8에서 .NET 5 RC1로 바꿀 때 빌드 오류나 런타임 오류가 발생할 수도 있습니다. 예를 들어 MinimumOSPlatformAttribute의 이름을 바꾸면 오류가 발생할 수 있습니다. 빌드 시 특성이 플랫폼별 어셈블리에 적용되지만, 이전 빌드 아티팩트가 여전히 이전 API 이름을 참조하기 때문입니다.

빌드 시 오류 예:

  • 오류 CS0246: 형식 또는 네임스페이스 이름 ‘MinimumOSPlatformAttribute’를 찾을 수 없습니다. (사용 중인 지시문 또는 어셈블리 참조가 없나요?)
  • 오류 CS0246: 형식 또는 네임스페이스 이름 ‘RemovedInOSPlatformAttribute’를 찾을 수 없습니다. (사용 중인 지시문 또는 어셈블리 참조가 없나요?)
  • 오류 CS0246: 형식 또는 네임스페이스 이름 ‘ObsoletedInOSPlatformAttribute’를 찾을 수 없습니다. (사용 중인 지시문 또는 어셈블리 참조가 없나요?)

런타임 오류 예:

처리되지 않은 예외가 발생했습니다. System.TypeLoadException: 'System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 어셈블리에서 'System.Runtime.Versioning.MinimumOSPlatformAttribute' 형식을 로드할 수 없습니다.

이러한 오류를 해결하려면 다음을 수행합니다.

  • MinimumOSPlatformAttribute의 모든 참조를 SupportedOSPlatformAttribute로 업데이트합니다.
  • RemovedInOSPlatformAttribute의 모든 참조를 UnsupportedOSPlatformAttribute로 업데이트합니다.
  • ObsoletedInOSPlatformAttribute에 대한 모든 참조를 제거합니다.
  • 이전 빌드 아티팩트를 삭제하려면 프로젝트를 다시 빌드합니다(또는 정리 + 빌드 수행).

영향을 받는 API

  • System.Runtime.Versioning.MinimumOSPlatformAttribute
  • System.Runtime.Versioning.ObsoletedInOSPlatformAttribute
  • System.Runtime.Versioning.RemovedInOSPlatformAttribute