Résolution des problèmes de portage de Windows Runtime 8.x vers UWP

La rubrique précédente portait le projet.

Nous vous recommandons vivement de lire jusqu’à la fin de ce guide de portage, mais nous comprenons également que vous êtes impatient d’aller de l’avant et de passer à l’étape où votre projet génère et s’exécute. À cette fin, vous pouvez faire des progrès temporaires en commentant ou en stubbant n’importe quel code non essentiel, puis en retournant pour rembourser cette dette ultérieurement. Le tableau des symptômes de résolution des problèmes et des remèdes dans cette rubrique peut vous être utile à ce stade, même s’il n’est pas un substitut à la lecture des rubriques suivantes. Vous pouvez toujours vous référer au tableau à mesure que vous progressez dans les rubriques ultérieures.

Suivi des problèmes

Les exceptions d’analyse XAML peuvent être difficiles à diagnostiquer, en particulier s’il n’existe aucun message d’erreur significatif dans l’exception. Assurez-vous que le débogueur est configuré pour intercepter les exceptions de première chance (pour essayer d’intercepter l’exception d’analyse le plus tôt possible). Vous pourrez peut-être inspecter la variable d’exception dans le débogueur pour déterminer si la valeur HRESULT ou le message comportent des informations utiles. Vérifiez également la fenêtre de sortie de Visual Studio pour voir si elle contient des messages d’erreur de l’analyseur XAML.

Si votre application se termine et que tout ce que vous savez est qu’une exception non gérée a été levée pendant l’analyse de balisage XAML, cela peut être le résultat d’une référence à une ressource manquante (autrement dit, une ressource dont la clé existe pour les applications universelles 8.1, mais pas pour les applications Windows 10, telles que certaines clés de style TextBlock système). Ou il peut s’agir d’une exception levée à l’intérieur d’un UserControl, d’un contrôle personnalisé ou d’un panneau de disposition personnalisé.

En dernier recours, vous pouvez effectuer un fractionnement binaire. Supprimez environ la moitié du balisage d’une page et réexécutez l’application. Vous saurez ensuite si l’erreur se trouve quelque part dans la moitié que vous avez supprimée (que vous devez maintenant restaurer dans n’importe quel cas) ou dans la moitié que vous n’avez pas supprimée. Répétez ce processus en fractionnant la moitié qui contient l’erreur et ainsi de suite jusqu’à ce que vous ayez ciblé le problème.

TargetPlatformVersion

Cette section explique ce qu’il faut faire si, lors de l’ouverture d’un projet Windows 10 dans Visual Studio, vous voyez le message « Mise à jour de Visual Studio requise. Un ou plusieurs projets nécessitent une version> du Kit de développement logiciel (SDK) <de plateforme qui n’est pas installée ou qui est incluse dans le cadre d’une prochaine mise à jour vers Visual Studio. »

  • Tout d’abord, déterminez le numéro de version du Kit de développement logiciel (SDK) pour Windows 10 que vous avez installé. Accédez à C :\Program Files (x86)\Windows Kits\10\Include\<versionfoldername> et notez le nom> du dossier de <version, qui sera en quad notation, « Major.Minor.Build.Revision ».
  • Ouvrez votre fichier projet pour modifier et rechercher les éléments et TargetPlatformMinVersion les TargetPlatformVersion éléments. Modifiez-les pour ressembler à ceci, en remplaçant <le nom du dossier> de version par le numéro de version de quad notation que vous avez trouvé sur le disque :
   <TargetPlatformVersion><versionfoldername></TargetPlatformVersion>
    <TargetPlatformMinVersion><versionfoldername></TargetPlatformMinVersion>

Résolution des symptômes et des remèdes

Les informations de remède dans le tableau sont destinées à vous donner suffisamment d’informations pour vous débloquer. Vous trouverez plus d’informations sur chacun de ces problèmes lors de la lecture de rubriques ultérieures.

Symptôme Solution
Lors de l’ouverture d’un projet Windows 10 dans Visual Studio, vous voyez le message « Mise à jour de Visual Studio requise. Un ou plusieurs projets nécessitent une version> du Kit de développement logiciel (SDK) <de plateforme qui n’est pas installée ou qui est incluse dans le cadre d’une prochaine mise à jour vers Visual Studio. » Consultez la section TargetPlatformVersion de cette rubrique.
Une exception System.InvalidCastException est levée lorsque InitializeComponent est appelé dans un fichier xaml.cs. Cela peut se produire lorsque vous avez plusieurs fichiers xaml (dont au moins un est qualifié MRT) partageant le même fichier xaml.cs et que les éléments ont des attributs x :Name incohérents entre les deux fichiers xaml. Essayez d’ajouter le même nom aux mêmes éléments dans les deux fichiers xaml, ou omettez complètement les noms.
Lors de l’exécution sur l’appareil, l’application se termine ou lorsqu’elle est lancée à partir de Visual Studio, l’erreur « Impossible d’activer l’application Windows Runtime 8.x [...]. La demande d’activation a échoué avec l’erreur « Windows n’a pas pu communiquer avec l’application cible. Cela indique généralement que le processus de l’application cible a été abandonné. […]”. Le problème peut être le code impératif exécuté dans vos propres pages ou dans des propriétés liées (ou d’autres types) pendant l’initialisation. Ou cela peut se produire lors de l’analyse du fichier XAML sur le point d’être affiché lorsque l’application s’est terminée (si elle est lancée à partir de Visual Studio, il s’agit de la page de démarrage). Recherchez des clés de ressource non valides et/ou essayez certaines des instructions de la section « Suivi des problèmes » de cette rubrique.
L’analyseur OU le compilateur XAML, ou une exception d’exécution, donne l’erreur « La ressource «< resourcekey> » n’a pas pu être résolue. » La clé de ressource ne s’applique pas aux applications plateforme Windows universelle (UWP) (c’est le cas avec certaines ressources Windows Phone, par exemple). Recherchez la ressource équivalente correcte et mettez à jour votre balisage. Les exemples que vous pouvez rencontrer immédiatement sont des clés système telles que PhoneAccentBrush.
Le compilateur C# donne l’erreur « Impossible de trouver le nom du type ou< de l’espace de noms « name> » ou « Le nom du type ou de l’espace de noms '<name>' n’existe pas dans l’espace de noms [...] » ou « Le nom du type ou de l’espace de noms '<name>' n’existe pas dans le contexte actuel ». Cela signifie probablement que le type est implémenté dans un Kit de développement logiciel (SDK) d’extension (bien qu’il puisse y avoir des cas où la solution n’est pas si simple). Utilisez le contenu de référence des API Windows pour déterminer le Kit de développement logiciel (SDK) d’extension qui implémente l’API, puis utilisez la commande Add>Reference de Visual Studio pour ajouter une référence à ce Kit de développement logiciel (SDK) à votre projet. Si votre application cible l’ensemble d’API appelée famille d’appareils universelle, il est essentiel que vous utilisiez la classe ApiInformation pour tester au moment de l’exécution la présence du Kit de développement logiciel (SDK) d’extension avant de les appeler (il s’agit du code adaptatif). Si une API universelle existe, cela est toujours préférable à une API dans un KIT SDK d’extension. Pour plus d’informations, consultez Kits de développement logiciel (SDK) d’extension.

La rubrique suivante porte le code XAML et l’interface utilisateur.