Zachowanie Assembly.GetCallingAssembly zmienia się, gdy obsługa śledzenia stosu jest wyłączona

Assembly.GetCallingAssembly() Teraz obsługuje natywną funkcję AOT i używa danych śledzenia stosu do rozpoznawania obiektu wywołującego. Jeśli obsługa śledzenia stosu jest wyłączona, metoda zgłasza teraz NotSupportedException zarówno w Native AOT, jak i CoreCLR.

Wersja wprowadzona

.NET 11 (wersja zapoznawcza 7)

Poprzednie zachowanie

Wcześniej w środowisku Native AOT Assembly.GetCallingAssembly() zawsze zgłaszał PlatformNotSupportedException. Wcześniej w coreCLR metoda zwróciła zestaw wywołujący, nawet jeśli StackTraceSupport został ustawiony na false.

Nowe zachowanie

Począwszy od platformy .NET 11 w natywnym AOT element Assembly.GetCallingAssembly() zwraca wywołujący zestaw, analizując dane śledzenia stosu. Począwszy od platformy .NET 11, zarówno w środowisku Native AOT, jak i CoreCLR, metoda zgłasza NotSupportedException, jeśli przełącznik funkcji StackTraceSupport jest ustawiony na false.

Komunikat o wyjątku:

Nie można pobrać informacji o śladzie stosu, gdy przełącznik funkcji StackTraceSupport jest ustawiony na false.

Typ zmiany przełamującej

Ta zmiana jest zmianą behawioralną.

Przyczyna zmiany

Aby zwrócić poprawny obiekt wywołujący, Assembly.GetCallingAssembly() wymaga danych śledzenia stosu. Jeśli obsługa śledzenia stosu jest niedostępna, środowisko uruchomieniowe nie może niezawodnie określić wywołującego. Środowisko uruchomieniowe zgłasza teraz NotSupportedException zamiast zwracać nieprawidłowy wynik. Aby uzyskać szczegółowe informacje o obsłudze natywnej usługi AOT, zobacz dotnet/runtime#129963.

Jeśli publikujesz przy ustawieniu Assembly.GetCallingAssembly() na NotSupportedException i Twoja aplikacja wywołuje false, spodziewaj się StackTraceSupport. Użyj jednej z następujących opcji:

Interfejsy API, których dotyczy problem