스택 추적 지원을 사용하지 않도록 설정하면 Assembly.GetCallingAssembly 동작이 변경됩니다.

Assembly.GetCallingAssembly() 이제 Native AOT를 지원하고 스택 추적 데이터를 사용하여 호출자를 확인합니다. 스택 추적 지원이 비활성화된 경우 이제 메서드는 Native AOT와 CoreCLR 모두에서 NotSupportedException를 throw합니다.

도입된 버전

.NET 11 미리 보기 7

이전 동작

이전에는 Native AOT에서 Assembly.GetCallingAssembly()가 항상 PlatformNotSupportedException을 throw했습니다. 이전에는 CoreCLR에서는 StackTraceSupportfalse로 설정된 경우에도 메서드는 호출한 어셈블리를 반환했습니다.

새 동작

.NET 11부터 Native AOT Assembly.GetCallingAssembly() 에서 스택 추적 데이터를 검사하여 호출 어셈블리를 반환합니다. .NET 11부터 Native AOT 및 CoreCLR 모두에서 StackTraceSupport 기능 스위치가 NotSupportedException로 설정된 경우, 이 메서드는 false를 throw합니다.

예외 메시지는 다음과 같습니다.

StackTraceSupport 기능 스위치가 false로 설정된 경우 스택 추적 정보를 검색할 수 없습니다.

파괴적 변경 유형

이 변경 사항은 동작 변경입니다.

변경 이유

올바른 호출자를 Assembly.GetCallingAssembly() 반환하려면 스택 추적 데이터가 필요합니다. 스택 추적 지원을 사용할 수 없는 경우 런타임에서 호출자를 안정적으로 확인할 수 없습니다. 이제 런타임은 잘못된 결과를 반환하는 대신 NotSupportedException 예외를 발생시킵니다. 네이티브 AOT 지원 세부 정보는 dotnet/runtime#129963 참조하세요.

falseStackTraceSupport(으)로 설정하여 게시하고 앱이 Assembly.GetCallingAssembly()를 호출하면 NotSupportedException이 발생할 것으로 예상됩니다. 다음 옵션 중 하나를 사용합니다.

  • 스위치를 제거하거나 StackTraceSupport을(를) true로 설정하여 스택 추적 지원을 활성화합니다.
  • Assembly.GetCallingAssembly() 호출을 제거합니다.
  • NotSupportedException를 포착하고 대체 경로를 명시적으로 처리합니다.

영향을 받는 API