Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Silverlight Underground

Retrogaming, Casual Games, Emulation with Silverlight
Astuce : la rétro-compatibilité avec Silverlight

[Introduction]

Voilà c'est fait, vous avez fini par craquer. Vous avez décidé d'installer les outils de développement de Silverlight 3 Beta.

Direction http://silverlight.net/getstarted/silverlight3/default.aspx.

Un premier message de mise en garde retient votre attention à peine quelques instants.

This is a developer beta release only! This means there is no “go-live” licensing available and the end-user runtime of Silverlight 3 is not available. The tools below are intended for software developers only.

Ouais OK, le commun des mortels attendra un peu mais moi je vais jouer avec dès maintenant ! [Rire démoniaque]

Once you install the Silverlight 3 Beta Tools for Visual Studio, your development environment will be a Silverlight 3 Beta environment. Visual Studio 2008 SP1 does not support multi-targeting for Silverlight applications so you will be unable to develop Silverlight 2 applications once these tools are installed. We recommend that you install the Silverlight 3 Beta tools on a separate environment if you still need to have the ability to develop Silverlight 2 applications.

Blablabla... On s'en fiche de tout ça !
Bye bye Silverlight 2, je veux mon SDK tout chaud...
A moi les projections 3D, la génération d'images dynamiques, le raw pipeline pour le son et la vidéo... vers l'infini et au delà !

Bon maintenant que c'est installé, on va s'assurer que ma killer application en Silverlight 2 fonctionne encore.

Voilà, je clique sur halo.sln.
Ah tiens... Le Visual Studio Conversion Wizard ?
Bon bah... Next, Next et Finish...

Cool, tout s'est ouvert normalement. Je lance ma compile... [Suspens insoutenable]

"No errors, no warnings". Quel star de codeur je suis !

Je génère la page HTML maintenant...
Et hop, voilà nickel, ça marche encore. Quels stars ces codeurs de la Silverlight Team !

C'est clair les applications développées en Silverlight 2 sont toujours compatibles dans Silverlight 3 !
(et sinon je peux toujours aller faire un tour ici : http://silverlight.net/forums/51.aspx)

Bon, je vais pouvoir reprendre le développement de Halo en Silverlight 3 cette fois. C'est parti !!!

...

[Quelques semaines de développement plus tard]

...

"Hé, tu le postes quand ton jeu en Silverlight ?"

Vous venez d'être subitement interrompu dans votre frénésie créatrice par votre ami JP sur Live Messenger.
C'est toujours pareil, vous vous éclatez avec ce nouveau SDK et il faut encore livrer des versions avec Silverlight 2. Pfff...

Bon, rien de grave, mon ancien code compilait et fonctionnait encore. Allez hop je publie tout ça sur mon site Web...

"Voilà JP, c'est dispo sur http://www.halosilverlight.com."

"Euh, il me demande d'installer un nouveau runtime mais je l'ai déjà installé Silverlight ?"

"Hum..."

Le souvenir de certaines mises en garde ressurgit soudain dans votre esprit. Le doute vous assaille...
Et si vous ne pouviez plus publier d'applications en Silverlight 2 ?

Noooonnnnn.... Ils avaient raison sur le site officiel ! C'est trop tard, il va falloir désinstaller et réinstaller l'ancienne version !
J'aurai dû lire attentivement. Qué stupido!

...

Et là, la solution finit par arriver là où on ne l'attendait pas...

"Tu as changé quelque chose ?"

Euréka ! Merci JP...
Tout simple, on va comparer la génération Silverlight 2 avec la génération Silverlight 3 et la rendre rétro-compatible !

"JP, tu es mon dieu !"

"... Ah bon ?... C'est par rapport à ta défaite au poker hier soir que tu dis ça ?"

"Non... Non... Bouge pas..."

Voilà, vous sortez l'artillerie lourde, un joli comparateur de fichiers et vous regardez les différences sur la page HTML générée.

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
   <param name="source" value="Halo.xap"/>
   <param name="onerror" value="onSilverlightError" />
   <param name="background" value="black" />
   <param name="minRuntimeVersion" value="3.0.40307.0" />
   <param name="autoUpgrade" value="true" />

Ah ouais, bah voilà... le minRuntimeVersion.
Je le modifie de 3.0.40307.0 à 2.0.30923.0 et on n'en parle plus...

"C'est bon tu peux faire F5 !"

"Euh... C'est pareil, vieux."

"Gheee..."

"Tu peux pas me refiler ton ancien XAP, il marchait bien lui ?"

Le fichier XAP... Mais oui bien sûr !

"JP, tu es le dieu des dieux !"

"Arrête... Je vais rougir..."

Un petit coup de WinZip et vous comparez le contenu du XAP.

<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" EntryPointAssembly="Halo" EntryPointType="Halo.App" RuntimeVersion="3.0.40307.0">
<Deployment.Parts>
<AssemblyPart x:Name="Halo" Source="Halo.dll" />
<AssemblyPart x:Name="SharpZipLib" Source="SharpZipLib.dll" />
</Deployment.Parts>
</Deployment>

Et là, surprise ! En plein dans le AppManifest.xml, le RuntimeVersion...
Encore une fois, je le modifie de 3.0.40307.0 à 2.0.30923.0. Je rezippe le tout et zou !

"Re... C'est bon JP !"

"Ah oui ça y est ça marche... Par contre c'est toujours en 2D ton Halo c'est normal ?"

"Gheee..."

THE END

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Conf’SharePoint : 10 bonnes raisons pour ne pas la rater par Le petit blog de Pierre / Pierre's little blog le 05-14-2013, 02:24

- [Event] Soirée de lancement Agile .NET France à Lyon par Blog Agile/ALM de Vincent THAVONEKHAM le 05-13-2013, 01:29

- .NET / Debug : inspection de la mémoire d'applications .NET (dump ou processus live) : première livraison d'une librairie .NET par Microsoft par CoqBlog le 05-11-2013, 22:21

- SharePoint : Incompatibilité avec Internet Explorer 10 (IE10) par Blog Technique de Romelard Fabrice le 05-08-2013, 16:29

- AutoSPInstaller pour SharePoint 2013 maintenant disponible en “RTM” par Julien Chable le 05-06-2013, 23:30

- [TFS2010] A la recherche du Shelveset perdu par Blog de Jérémy Jeanson le 05-03-2013, 21:46

- .NET / Debug post-mortem : obtenir le fichier mscordacwks.dll correspondant à un dump quand on n'a plus d'accès direct à ce fichier par CoqBlog le 04-28-2013, 19:57

- [W8] Afficher un graphe par CPU dans le gestionnaire des tâches par Blog de Jérémy Jeanson le 04-28-2013, 17:48

- [WCF] Limiter proprement l’accès à vos ressources serveur par Blog de Jérémy Jeanson le 04-26-2013, 22:59

- Event : Je serai speaker à la Conf’SharePoint par Blog Technique de Romelard Fabrice le 04-26-2013, 12:00