Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Assembly.GetCallingAssembly() agora oferece suporte a AOT nativo e usa dados de rastreamento da pilha para identificar o chamador. Se o suporte ao rastreamento de pilha estiver desabilitado, o método agora gerará NotSupportedException tanto no Native AOT quanto no CoreCLR.
Versão introduzida
.NET 11 Versão Prévia 7
Comportamento anterior
Antes, no Native AOT, Assembly.GetCallingAssembly() sempre lançava PlatformNotSupportedException. Anteriormente, no CoreCLR, o método retornava o assembly de chamada mesmo se StackTraceSupport estivesse definido como false.
Novo comportamento
A partir do .NET 11, no AOT Nativo, Assembly.GetCallingAssembly() retorna o assembly de chamada inspecionando dados de rastreamento de pilha. A partir do .NET 11, tanto no Native AOT quanto no CoreCLR, o método gera NotSupportedException se a alternância de recurso StackTraceSupport estiver definida como false.
A mensagem de exceção é:
Não é possível recuperar informações de stack trace quando a chave de recurso StackTraceSupport está definida como false.
Tipo de mudança disruptiva
Esta é uma alteração comportamental.
Motivo da alteração
Para identificar o chamador correto, Assembly.GetCallingAssembly() requer dados de rastreamento da pilha. Se o suporte ao rastreamento de pilha não estiver disponível, o runtime não poderá determinar o chamador de forma confiável. O runtime agora lança NotSupportedException em vez de retornar um resultado incorreto. Para obter detalhes de suporte do AOT nativo, consulte dotnet/runtime#129963.
Ação recomendada
Se você publicar com StackTraceSupport definido como false e seu aplicativo chamar Assembly.GetCallingAssembly(), espere NotSupportedException. Use uma destas opções:
- Habilite o suporte ao rastreamento da pilha removendo a chave ou definindo
StackTraceSupportcomotrue. - Remova chamadas para Assembly.GetCallingAssembly().
- Pegue NotSupportedException e manipule o caminho de fallback explicitamente.