Migration d'application Silverlight 3.0 et Prism Composite

Intéressant de voir ce que nous avons à faire pour migrer une application.

Il s'agit d'utiliser Silverlignt 5.0 et la dernière version de Prism et Visual Studio 2010 avec l'application téléchargée page suivante :

http://www.developmentalmadness.com/archive/2009/11/04/mvvm-with-prism-101-ndash-part-6-commands.aspx

Qui est développée avec
Visual Studio 2008
Prism Composite
et Silverlight 3.0

Requirements :
Visual Studio 2010
Prism 4.0
Silverlight 5.0

Migration de Visual Studio 2008 vers Visual Studio 2010

Ouverture de la solution avec Visual Studio 2010
Les projets Silverlight comme CodeCamp.Common sont grisés VS 2010 n'a pas pu les charger mais il nous permet d'éditer les fichiers .csproj

Dans le fichier projet on remplace :
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
Par
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
Pour le .NET Framework

Et :
<TargetFrameworkVersion>v3.0</TargetFrameworkVersion>
Par :
<TargetFrameworkVersion>v5.0</TargetFrameworkVersion>
Pour la version de Silverlight

Sauvegarde, puis bouton droit sur le projet Reload et la tour est joué.

Modifier les références, utiliser la dernière version de Prims

Modifier les référence aux anciennes librairies de Prims Composite
On supprime ces trois références pour les remplacer par une référence à :
\\Prism\Bin\Silverlight\Microsoft.Practices.Prism.dll

On Build le projet pour corriger les erreurs.
Dans :
\\CodeCamp\CodeCamp.Common\Events\MessageChangedEvent.cs
On remplace la directive Using :
using Microsoft.Practices.Composite.Presentation.Events;
Par :
using Microsoft.Practices.Prism.Events;
Dans :
\\CodeCamp\CodeCamp.Common\Utility\MockEventAggregator.cs
On remplace la directive Using :

using Microsoft.Practices.Composite.Events;
Par :
using Microsoft.Practices.Prism.Events;
Et :
public TEventType GetEvent<TEventType>() where TEventType : EventBase
Par :
public TEventType GetEvent<TEventType>() where TEventType : EventBase, new() // BRY

IEventAggregator se trouve dans le namespace :
using Microsoft.Practices.Prism.Events;

On termine ainsi la modification des référence aux nouvelles librairies de prims tout doucement en utilisant Visual Studio qui trouvera pour nous les directives Using à utiliser :
Visual Studio 2010 détecte les directives Using à utiliser
Pour le fichier :
\\CodeCamp\CodeCamp.Editor\EditorView.xaml
Il faut remplacer, l'ancienne référence :
    xmlns:cmd="clr-namespace:Microsoft.Practices.Prims.Presentation.Commands;assembly=Microsoft.Practices.Composite.Presentation"
Par :
xmlns:cmd="http://www.codeplex.com/prism"

Pour le fichier :
\\CodeCamp\CodeCamp.Shell\Bootstrapper.cs
On remplace :
Shell shell = Container.Resolve<Shell>();
Par :
Shell shell = Container.TryResolve<Shell>();

Pour résoudre les dernières erreurs on regardera aussi l'exemple :
\\Prism\Quickstarts\Modularity\Silverlight\ModularityWithUnity\ModularityWithUnity.Silverlight\QuickStartBootstrapper.cs

Et donc on remplace les directives using :
using Microsoft.Practices.Composite.Modularity;
using Microsoft.Practices.Composite.UnityExtensions;
Par :
using Microsoft.Practices.Prism.UnityExtensions;
using Microsoft.Practices.Prism.Modularity;
using Microsoft.Practices.Unity;

La fonction de crétation du catalogue :
protected override IModuleCatalog GetModuleCatalog()
Par la nouvelle :
        protected override IModuleCatalog CreateModuleCatalog()

Dans le fichier :
\\PrismSamples\CodeCamp\CodeCamp.Shell\Shell.xaml
On remplace :
    xmlns:Regions="clr-namespace:Microsoft.Practices.Composite.Presentation.Regions;assembly=Microsoft.Practices.Composite.Presentation"
Par :
xmlns:Regions="http://www.codeplex.com/prism"

Les références du projet CodeCamp.Shell sont ainsi :


Les références du projet CodeCamp.Shell

On peut enfin lancer l'exécution de la solution, et obtenir le résultat suivant :

Exécution de la solution CodeCamp
Download Sources Code
Code source de la solution ainsi modifiée, en comparant avec les sources de référence on se rend compte du travail effectué ... pour migrer cette solution.

Have fun !



Aucun commentaire:

Enregistrer un commentaire

Pour plus d'interactivité, n'hésitez pas à laisser votre commentaire.