Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
É importante testar as compilações de versão do seu aplicativo da Plataforma Universal do Windows em suas plataformas de destino porque as configurações de depuração e lançamento são completamente diferentes. Por padrão, a configuração de depuração usa o tempo de execução do .NET Core para compilar seu aplicativo, mas a configuração de versão usa o .NET Native para compilar seu aplicativo para código nativo.
Importante
Para obter informações sobre como lidar com o MissingMetadataException, MissingInteropDataExceptione MissingRuntimeArtifactException exceções que você pode encontrar ao testar as versões de lançamento do seu aplicativo, consulte "Etapa 4: resolver manualmente metadados ausentes: no tópico Introdução, bem como Reflection e nativo do .NET e diretivas de tempo de execução (rd.xml) Configuration File Reference.
Depurar e liberar compilações
Quando o build de depuração é executado sobre o runtime do .NET Core, não foi compilado em código nativo. Isso torna todos os serviços normalmente fornecidos pelo tempo de execução disponíveis para seu aplicativo.
Por outro lado, o build de release é compilado como código nativo para as suas plataformas alvo, remove a maioria das dependências de tempos de execução e bibliotecas externas, e otimiza intensamente o código para maximizar o desempenho.
Ao depurar builds de lançamento que são compilados usando o .NET Native:
Você usa o mecanismo de depuração nativo do .NET, que é diferente das ferramentas de depuração normais do .NET.
O tamanho do seu executável é reduzido tanto quanto possível. Uma das maneiras pelas quais o .NET Native reduz o tamanho de um executável é cortando significativamente as mensagens de exceção durante a execução, um tópico discutido com mais detalhes na seção mensagens de exceção durante a execução.
Seu código é altamente otimizado. Isto significa que o inlining é utilizado sempre que possível. (O inlining move o código de rotinas externas para a rotina de chamada.) O fato de que o .NET Native fornece um tempo de execução especializado e implementa inlining agressivo afeta a pilha de chamadas que é exibida durante a depuração. Para obter mais informações, consulte a seção pilha de chamadas do
Runtime.
Observação
Você pode controlar se as compilações de depuração e lançamento são compiladas com a cadeia de ferramentas nativa do .NET marcando ou desmarcando a caixa Compilar com a cadeia de ferramentas nativa do .NET . No entanto, a Microsoft Store sempre compilará a versão de produção do seu aplicativo com a cadeia de ferramentas nativa do .NET.
Mensagens de exceção de tempo de execução
Para minimizar o tamanho do executável do aplicativo, o .NET Native não inclui o texto completo das mensagens de exceção. Como resultado, as exceções de tempo de execução lançadas em compilações de versão podem não mostrar o texto completo das mensagens de exceção. Em vez disso, o texto pode consistir em uma substring junto com um link a ser seguido para obter mais informações. Por exemplo, as informações de exceção podem aparecer como:
Exception thrown: '$16_System.AggregateException' in Unknown Module.
Additional information: AggregateException_ctor_DefaultMessage
If there is a handler for this exception, the program may be safely continued.
Se você precisar da mensagem de exceção completa, execute a compilação de depuração. Por exemplo, a informação de exceção anterior da build de lançamento pode aparecer da seguinte forma na build de depuração:
Exception thrown: 'System.AggregateException' in NativeApp.exe.
Additional information: Value does not fall within the expected range.
Pilha de chamadas de execução
Devido a inlining e outras otimizações, a pilha de chamadas exibida por um aplicativo compilado pela cadeia de ferramentas .NET Native pode não ajudá-lo a identificar claramente o caminho para uma exceção de tempo de execução.
Para obter a pilha completa, execute a compilação de depuração.