Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
Assembly.GetCallingAssembly() ahora es compatible con Native AOT y utiliza datos de seguimiento de pila para identificar al llamante. Si la compatibilidad con el seguimiento de pila está desactivada, el método lanza ahora NotSupportedException tanto en Native AOT como en CoreCLR.
Versión introducida
.NET 11 Preview 7
Comportamiento anterior
Antes, con Native AOT, Assembly.GetCallingAssembly() siempre lanzaba PlatformNotSupportedException. Anteriormente, en CoreCLR, el método devolvía el ensamblado que realiza la llamada incluso si StackTraceSupport se estableció en false.
Nuevo comportamiento
A partir de .NET 11, en Native AOT, Assembly.GetCallingAssembly() devuelve el ensamblado que realiza la llamada mediante el análisis de los datos de seguimiento de pila. A partir de .NET 11, tanto en Native AOT como en CoreCLR, el método lanza NotSupportedException si el interruptor de características StackTraceSupport está establecido en false.
El mensaje de excepción es:
No se puede recuperar la información de seguimiento de pila cuando el conmutador de características StackTraceSupport está establecido en false.
Tipo de cambio disruptivo
Este es un cambio de comportamiento.
Motivo del cambio
Para devolver un llamante correcto, Assembly.GetCallingAssembly() requiere datos de seguimiento de pila. Si la compatibilidad con el seguimiento de pila no está disponible, el tiempo de ejecución no puede determinar el llamante de forma fiable. El tiempo de ejecución ahora produce NotSupportedException en lugar de devolver un resultado incorrecto. Para más información sobre la compatibilidad con Native AOT, consulte dotnet/runtime#129963.
Acción recomendada
Si publicas con StackTraceSupport establecido en false y tu aplicación llama a Assembly.GetCallingAssembly(), espera NotSupportedException. Use una de estas opciones:
- Habilita la compatibilidad con el seguimiento de pila eliminando el conmutador o estableciendo
StackTraceSupportentrue. - Elimine las llamadas a Assembly.GetCallingAssembly().
- Detecte NotSupportedException y gestione explícitamente la ruta alternativa.