Start Debugging

Tag: native-aot

19 posts · Página1de2

Dependente de framework vs autocontido vs Native AOT para uma imagem de contêiner do .NET 11
Dependente de framework sobre uma imagem aspnet chiseled é o padrão certo para um serviço ASP.NET Core no .NET 11, porque a camada do runtime é compartilhada entre serviços e uma CVE do runtime é corrigida trocando a imagem base. Autocontido com trimming e Native AOT compram uma imagem de 2x a 5x menor e uma inicialização a frio bem mais rápida, e custam isso. Tamanhos publicados reais, a conta das camadas compartilhadas e o bug de inferência de imagem base do .NET 11 que quebra o caminho AOT.
O que é código trim-safe e como eu escrevo isso?
Código trim-safe é código que o trimmer do .NET consegue provar estaticamente que é alcançável, então ele sobrevive quando o código não usado é removido de um app self-contained. Este é o guia prático: ligue o analisador, leve cada aviso IL2xxx a zero, anote a reflexão com DynamicallyAccessedMembers, propague RequiresUnreferencedCode para APIs públicas e substitua padrões não analisáveis por geradores de código-fonte.
O que é o atributo DynamicallyAccessedMembers?
DynamicallyAccessedMembers informa ao trimmer do .NET e ao compilador AOT quais membros de um Type você acessa por reflexão, para que sejam mantidos em vez de removidos pelo trimming. Ele transforma uma MissingMethodException silenciosa em runtime em um aviso IL2070 em tempo de build. Veja o que o atributo faz, como funciona a análise de fluxo de dados por trás dele e como anotar corretamente parâmetros, campos e parâmetros de tipo genéricos.
Próximo