Assembly.GetCallingAssembly-beteende ändras när stöd för stackspårning är inaktiverat

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.

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:

Berörda API:er