강력한 이름 API가 PlatformNotSupportedException을 throw함

.NET/.NET Core에서 지원되지 않지만 액세스 시 아무 작업도 수행하지 않은 몇 가지 API가 이제 런타임에 PlatformNotSupportedException(을)를 throw하도록 변경되었습니다. 이전에는 이러한 API를 사용하면 결국 런타임 예외가 추가로 발생하게 되었습니다. 이제 형식이 인스턴스화되거나 처음 액세스될 때 예외가 throw됩니다.

이전 동작

이전 버전에서는 AssemblyName.KeyPair 또는 StrongNameKeyPair(Byte[])(을)를 호출 시 아무런 작업도 하지 않았습니다. StrongNameKeyPair(FileStream)(을)를 호출하면 스트림을 읽었지만 그렇지 않으면 아무 작업도 수행하지 않았습니다.

새 동작

.NET 6부터 영향을 받는 세 가지 API는 각각 런타임에 PlatformNotSupportedException(을)를 throw합니다.

도입된 버전

.NET 6

호환성이 손상되는 변경의 형식

이 변경은 이진 호환성에 영향을 줄 수 있습니다.

변경 이유

이전에는 API를 호출한 애플리케이션이 컴파일되어 실행되었지만 인스턴스가 코드 경로에서 사용되는 즉시 런타임 예외가 발생했습니다. 이 시나리오가 지원되지 않는다는 것을 더 명확히 하기 위해 예외 throw 논리가 인스턴스 생성자로 이동되었습니다. 인스턴스가 생성되지 않은 경우 이 형식, 즉 AssemblyName.KeyPair(을)를 반환하는 공용 진입점에서도 예외가 throw됩니다.

.NET/.NET Core에서는 강력한 이름 서명이 지원되지 않으며 해결 방법이 없습니다.

참고 항목

.NET Core/5+는 해당 런타임에서 서명을 확인하지 않습니다. 그러나 플랫폼 간 라이브러리를 대상으로 하는 경우(예: .NET Standard 2.0을 대상으로 하는 기본 인증 패키지이므로 .NET Framework에서도 실행됨) 런타임 간 호환성을 위해 강력한 이름을 지정하는 것이 좋습니다. .NET Framework는 호출 앱의 이름이 강력한 경우 계속해서 강력한 이름 지정을 적용합니다. Sn.exe 도구를 사용하여 모든 버전의 .NET에서 어셈블리에 강력한 이름을 지정할 수 있습니다. 자세한 내용은 강력한 이름 서명을 참조하세요.

영향을 받는 API

참고 항목