Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Assembly.GetCallingAssembly() stöder nu Native AOT och använder stackspårningsdata för att identifiera anroparen. Om stöd för stackspår är inaktiverat genererar metoden nu NotSupportedException i både Native AOT och CoreCLR.
Version lanserad
.NET 11 Förhandsversion 7
Tidigare beteende
Tidigare kastade Assembly.GetCallingAssembly() alltid PlatformNotSupportedException i Native AOT. Tidigare returnerade metoden i CoreCLR den anropande sammansättningen även om StackTraceSupport var inställt på false.
Nytt beteende
Från och med .NET 11 returnerar Assembly.GetCallingAssembly(), med Native AOT, den anropande assemblyn genom att inspektera data från stackspårningen. Från och med .NET 11, på både Native AOT och CoreCLR, utlöser metoden NotSupportedException om funktionsväxeln false är inställd på StackTraceSupport.
Undantagsmeddelandet är:
Det går inte att hämta stackspårningsinformation när StackTraceSupport-funktionsväxeln är inställd på false.
Typ av brytande ändring
Den här ändringen är en beteendeförändring.
Orsak till ändringen
För att returnera rätt anropare kräver Assembly.GetCallingAssembly() stackspårningsdata. Om stöd för stackspårning inte är tillgängligt kan körmiljön inte på ett tillförlitligt sätt fastställa anroparen. Körmiljön utlöser nu NotSupportedException i stället för att returnera ett felaktigt resultat. Information om intern AOT-support finns i dotnet/runtime#129963.
Rekommenderad åtgärd
Om du publicerar med StackTraceSupport inställt på false och appen anropar Assembly.GetCallingAssembly()förväntar du dig NotSupportedException. Använd något av följande alternativ:
- Aktivera stöd för stackspår genom att ta bort växeln eller ställa in
StackTraceSupporttilltrue. - Ta bort anrop till Assembly.GetCallingAssembly().
- Fånga NotSupportedException och hantera reservvägen uttryckligen.