Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Zalecana akcja
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:
- Włącz obsługę śladu stosu, usuwając ten przełącznik lub ustawiając
StackTraceSupportnatrue. - Usuń wywołania do Assembly.GetCallingAssembly().
- Przechwyć NotSupportedException i obsłuż ścieżkę rezerwową jawnie.