Résolution des problèmes généraux .NET Native
Cet article explique comment résoudre les problèmes potentiels que vous pouvez rencontrer lors du développement d’applications avec .NET Native.
Problèmes
Problème : La fenêtre de sortie de la génération n’est pas mise à jour correctement.
Résolution : La fenêtre de sortie de la génération n’est mise à jour qu’une fois la génération terminée. La génération pouvant prendre plusieurs minutes, les mises à jour peuvent mettre du temps à apparaître.
Problème : le temps de génération de la vente au détail de votre application pour Arm a augmenté.
Résolution : lorsque vous déployez une application sur votre appareil Arm, l’infrastructure .NET Native est appelée. Cette compilation effectue un grand nombre d'optimisations tout en garantissant que la sémantique non statique telle que la réflexion continue de fonctionner. En outre, la partie du .NET Framework utilisée par l’application est liée statiquement pour des performances optimales et doit également être compilée en code natif. C'est pourquoi la compilation prend plus de temps.
Toutefois, les temps de compilation ne dépassent pas de plus d'une minute la compilation standard de la plupart des applications sur un ordinateur de développement ordinaire. En règle générale, la génération d’images natives pour .NET Framework sur un ordinateur de développement standard prend plusieurs minutes. Même avec toutes les optimisations pour améliorer le code généré et avec notamment .NET Framework, les temps de génération d’application sont généralement une minute ou deux.
Nous allons continuer à travailler sur l'amélioration des performances de la compilation en nous penchant sur la compilation multithread et sur d'autres optimisations.
Problème : vous ne savez pas si votre application a été compilée à l’aide de .NET Native.
Résolution : si le compilateur .NET Native est appelé, vous remarquerez des temps de génération plus longs, et le Gestionnaire des tâches affiche différents processus de composant .NET Native tels que ILC.exe et nutc_driver.exe.
Une fois que vous avez généré votre projet avec .NET Native, vous trouverez la sortie sous obj\config\ arch\projectname.ilc\out. Le contenu final du package natif se trouve sous bin\arch\config\AppX. Le contenu final du package natif se trouve sous \bin\arch\config\AppX si vous avez déployé l’application.
Problème : Votre application .NET Native lève des exceptions runtime (généralement des exceptions MissingMetadataException ou MissingRuntimeArtifactException) qu’elle n’a pas levées lors de la compilation sans .NET Native.
Résolution : Les exceptions sont levées, car .NET Native n’a pas fourni les métadonnées ou le code d’implémentation qui est normalement disponible via la réflexion. (Pour plus d’informations, consultez .NET Native et Compilation.) Pour éliminer l’exception, vous devez ajouter une entrée à votre fichier de directives d’exécution (rd.xml) afin que la chaîne d’outils .NET Native puisse rendre les métadonnées ou le code d’implémentation disponibles au moment de l’exécution. Deux utilitaires de résolution des problèmes sont disponibles, qui vont générer l'entrée nécessaire pour effectuer des ajouts à votre fichier de directives d'exécution :
l’ utilitaire de résolution des problèmes MissingMetadataException pour les types ;
l’ utilitaire de résolution des problèmes MissingMetadataException pour les méthodes.
Pour plus d’informations, consultez Réflexion et .NET Native.