Assembly.GetCallingAssembly() 이제 Native AOT를 지원하고 스택 추적 데이터를 사용하여 호출자를 확인합니다. 스택 추적 지원이 비활성화된 경우 이제 메서드는 Native AOT와 CoreCLR 모두에서 NotSupportedException를 throw합니다.
도입된 버전
.NET 11 미리 보기 7
이전 동작
이전에는 Native AOT에서 Assembly.GetCallingAssembly()가 항상 PlatformNotSupportedException을 throw했습니다. 이전에는 CoreCLR에서는 StackTraceSupport가 false로 설정된 경우에도 메서드는 호출한 어셈블리를 반환했습니다.
새 동작
.NET 11부터 Native AOT Assembly.GetCallingAssembly() 에서 스택 추적 데이터를 검사하여 호출 어셈블리를 반환합니다. .NET 11부터 Native AOT 및 CoreCLR 모두에서 StackTraceSupport 기능 스위치가 NotSupportedException로 설정된 경우, 이 메서드는 false를 throw합니다.
예외 메시지는 다음과 같습니다.
StackTraceSupport 기능 스위치가 false로 설정된 경우 스택 추적 정보를 검색할 수 없습니다.
파괴적 변경 유형
이 변경 사항은 동작 변경입니다.
변경 이유
올바른 호출자를 Assembly.GetCallingAssembly() 반환하려면 스택 추적 데이터가 필요합니다. 스택 추적 지원을 사용할 수 없는 경우 런타임에서 호출자를 안정적으로 확인할 수 없습니다. 이제 런타임은 잘못된 결과를 반환하는 대신 NotSupportedException 예외를 발생시킵니다. 네이티브 AOT 지원 세부 정보는 dotnet/runtime#129963 참조하세요.
권장 작업
false을 StackTraceSupport(으)로 설정하여 게시하고 앱이 Assembly.GetCallingAssembly()를 호출하면 NotSupportedException이 발생할 것으로 예상됩니다. 다음 옵션 중 하나를 사용합니다.
- 스위치를 제거하거나
StackTraceSupport을(를)true로 설정하여 스택 추적 지원을 활성화합니다. - Assembly.GetCallingAssembly() 호출을 제거합니다.
- NotSupportedException를 포착하고 대체 경로를 명시적으로 처리합니다.
영향을 받는 API
.NET