Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Assembly.GetCallingAssembly() unterstützt jetzt native AOT und verwendet Stapelüberwachungsdaten, um den Aufrufer aufzulösen. Wenn die Stapelüberwachungsunterstützung deaktiviert ist, löst die Methode nun auf Native AOT und CoreCLR NotSupportedException aus.
Eingeführt in Version
.NET 11 Vorschau 7
Bisheriges Verhalten
Bisher hat Assembly.GetCallingAssembly() unter Native AOT immer PlatformNotSupportedException ausgelöst. Zuvor gab die Methode unter CoreCLR die aufrufende Assembly zurück, auch wenn StackTraceSupport auf false gesetzt wurde.
Neues Verhalten
Ab .NET 11 gibt Assembly.GetCallingAssembly() unter Native AOT durch Auswerten von Stapelüberwachungsdaten die aufrufende Assembly zurück. Ab .NET 11 löst die Methode sowohl unter Native AOT als auch unter CoreCLR NotSupportedException aus, wenn der StackTraceSupport Feature-Schalter auf false gesetzt ist.
Die Ausnahmemeldung lautet:
Stapelablaufverfolgungsinformationen können nicht abgerufen werden, wenn der StackTraceSupport-Featureswitch auf "false" festgelegt ist.
Art der einschneidenden Änderung
Diese Änderung ist eine Verhaltensänderung.
Grund für die Änderung
Um einen korrekten Aufrufer zurückzugeben, benötigt Assembly.GetCallingAssembly() Stack-Trace-Daten. Wenn die Stapelablaufverfolgungsunterstützung nicht verfügbar ist, kann die Laufzeit den Aufrufer nicht zuverlässig ermitteln. Die Laufzeit wirft jetzt NotSupportedException, anstatt ein falsches Ergebnis zurückzugeben. Details zur nativen AOT-Unterstützung finden Sie unter dotnet/runtime#129963.
Empfohlene Maßnahme
Wenn Sie mit StackTraceSupport, das auf false gesetzt ist, veröffentlichen und Ihre App Assembly.GetCallingAssembly() aufruft, rechnen Sie mit NotSupportedException. Verwenden Sie eine dieser Optionen:
- Aktivieren Sie die Stapelüberwachungsunterstützung, indem Sie den Schalter oder die Einstellung
StackTraceSupportauftrueentfernen. - Entfernen Sie Aufrufe von Assembly.GetCallingAssembly().
- Fangen Sie NotSupportedException ab und behandeln Sie den Fallbackpfad explizit.