Retour d’expérience : Passage d’une app Windows Phone Silverlight 8.0 à 8.1

La nouvelle mouture de Windows Phone 8.1 présentée hier à la Build est aussi riche en features pour les utilisateurs que pour les développeurs.

Afin de profiter des nouveautés offertes par WP8.1 j’ai donc voulu mettre une de mes applications les plus complexes à niveau.

Cette application est un bon test puisqu’elle contient des librairies C++/CX ainsi que du code C# plus classique.

Une fois Visual Studio 2013 Update 2 RC installé et exécuté, je me lance dans l’aventure!

Transformation !

Pour plus de sécurité, il est de bon ton de faire une copie du dossier de son app. On ne sait jamais.

Puis, on commence la migration de notre application vers Silverlight 8.1 (oui on a plus peur de dire Silverlight).

Pour ce faire, il suffit de cliquer droit sur la solution puis dans le menu lancer « retarget solution ».

Il est également possible d’effectuer cette migration projet par projet.

Une fenêtre apparaît ensuite nous signalant que la conversion est à sens unique.

Retarget

Il ne nous reste plus qu’à cliquer sur OK et, quelques secondes plus tard, notre projet est mise à jour :

RetargetProject

Pour l’instant tout va bien !

On se lance !

Trêve de plaisanterie, il est temps de lancer notre application fraîchement convertie.

La compilation se passe sans problème mais au lancement de l’app c’est le drame !

Elle plante lamentablement.

En regardant d’un peu plus près cela ne semble pas trop grave puisque c’est une exception sur chemin de fichier qui ne lui plait pas.

Plus précisément le chemin d’un fichier contenu dans le XAP et chargé par la commande GetFileFromPathAsync

Coté Windows Phone 8, j’obtenais le fichier de la manière suivante :

return await StorageFile.GetFileFromPathAsync("Assets/Icons/gba.png");

Windows Phone 8.1 est plus tatillon et n’accepte que les chemins absolus comme sur un système de fichier Windows classique.
En ce sens, on se rapproche de Windows 8.
Plus de ‘/’ donc mais des ‘\’ sans oublier le signe ‘@’ devant la chaine si l’on est fainéant (evite que le ‘\’ soit vu comme un caractère d’échappement et d’écrire « \\ »).

return await StorageFile.GetFileFromPathAsync(
  Path.Combine(
    Windows.ApplicationModel.Package.Current.InstalledLocation.Path,
    @"Assets\Icons\gba.png"
));

Notez, que ce code marche également parfaitement sur Windows Phone 8.0.

Une fois corrigé, l’application se lance normalement.

Conclusion

Le passage d’une application WP Silverlight 8.0 à 8.1 s’est effectuée rapidement et sans problème majeur.
La petite mésaventure du « GetFileFromPathAsync » invite néamoins à la prudence et aux tests intensifs avant une première mise en production.

Vous trouverez d’autres différences entre SL8 et SL8.1 sur cette page :
http://msdn.microsoft.com/en-us/library/windowsphone/develop/dn642084(v=vs.105).aspx

Sans device 8.1, difficile à dire s’il on bénéficie de meilleur performance pour notre app.
En revanche, on a désormais accès aux toutes nouvelles API de Windows Phone Silverlight 8.1 ce qui ouvre de nouvelles possibilités que je vais m’empresser de mettre en oeuvre. Pas vous ?

One Response to Retour d’expérience : Passage d’une app Windows Phone Silverlight 8.0 à 8.1

  1.  

    Mais si !!!

leave your comment