Tout est dans le titre, enfin on peut utiliser la version Visual Studio 2010 RC pour faire du RIA Services avec Silverlight 4 RC, ça a été annoncé au MIX 10 et relayé ici et là et sûrement autre part.
Au vu de cette nouvelle je m’empresse de tout télécharger et de tout installer comme expliqué dans les blog cité précédemment :
Bref récap :
1 – Désinstaller visual Studio 2010 Beta 2
2 – Désinstaller WCF ria Service si vous l’aviez déjà
3 – Installer Visual Studio 2010 RC et le framework 4.0
4 – Installer Microsoft Silverlight 4 Tools for Visual Studio 2010 RC (Dedans il y a le runtime et le sdk)
5 – Installer WCF RIA Service RC
6 – Installer WCF RIA Services Toolkit
C’était la partie facile (mais longue).
Ensuite tout content j’ouvre le projet bien entamé en Visual studio 2010 beta 2 + Silverlight 4 beta + WCF Ria Service beta, et là c’est moins drôle, ça ne compile pas, pleins d’erreurs,
après un moment d’angoisse, je regarde de plus près.
Il s’avère que les noms des assembly ont changé (merci pour la blague microsoft) , plus de System.Windows.Ria et ses copines.
Je cherche donc sur le net mais rien, je regarde donc de plus près et répare les dégâts en cherchant avec l’Object Browser de Visual Studio où sont passés mes petits.
Je décide de tout noter pour peut-être aider certaines personnes dans le même cas que moi, voici donc les changements que j’ai dû effectuer pour pouvoir enfin recompiler mon projet.
Les modifications présentées ici n’ont rien d’exhaustif
Coté client (App)
3 nouvelles assembly de base sont à ajouter au référence du projet :
C:\Program Files\Microsoft SDKs\RIA Services\v1.0\Libraries\Silverlight :
- System.ServiceModel.DomainServices.Client
- System.ServiceModel.DomainServices.Client.Web
et celle de silverlight 4 (C:\Program Files\Microsoft SDKs\Silverlight\v4.0\Libraries\Client) :
- System.ServiceModel.Web.Extensions.dll
les 2 premières sont situées là : C:\Program Files\Microsoft SDKs\RIA Services\v1.0\Libraries\Silverlight et la troisième là C:\Program Files\Microsoft SDKs\Silverlight\v4.0\Libraries\Client
- System.ServiceModel.DomainServices.Client.dll
- System.ServiceModel.DomainServices.Client.Web.dll
- System.ServiceModel.Web.Extensions.dll
Ensuite vous devez remplacer les using (un petit coup de find/replace) :
« System.Windows.Ria » par « System.ServiceModel.DomainServices.Client »
« System.Windows.Ria.ApplicationServices » par « System.ServiceModel.DomainServices.Client.ApplicationServices »
Ensuite si vous avez utilisé les DomainDataSource il faut dans un premier temps référencer System.Windows.Controls.dll situé dans C:\Program Files\Microsoft SDKs\Silverlight\v4.0\Libraries\Client et ensuite
modifier la déclaration du namespace dans les fichiers XAML :
xmlns:riaControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Ria"
devient
xmlns:riaControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.DomainServices"
du coté de l’app.xaml il est aussi nécessaire de modifier le namespace qui sert à l’authentification :
xmlns:appsvc="clr-namespace:System.Windows.Ria.ApplicationServices;assembly=System.Windows.Ria"
devient
xmlns:appsvc="clr-namespace:System.ServiceModel.DomainServices.Client.ApplicationServices;assembly=System.ServiceModel.DomainServices.Client.Web"
Coté Serveur (App.web)
Ici aussi il y a du changement, au revoir :
- System.Web.DomainServices.dll
- System.Web.Ria .dll
Il faut dorénavant référencer :
- System.ServiceModel.DomainServices.Server.dll
- System.ServiceModel.DomainServices.Hosting.dll
Et si vous faites de l’Entity
System.Web.DomainServices.EntityFramework devient System.ServiceModel.DomainServices.EntityFramework.dll
Ensuite vous devez encore remplacer les using :
« System.Web.DomainServices » par « System.ServiceModel.DomainServices.Hosting »
« System.Web.Ria » par « System.ServiceModel.DomainServices.Server »
« System.Web.Ria.ApplicationServices » par « System.ServiceModel.DomainServices.Server.ApplicationService«
Dernière étape (pour moi et ce projet en particulier, je l’espère pour vous aussi) :
Quelques petites modifications dans le Web.config :
<add name="DomainServiceModule" type="System.Web.Ria.Services.DomainServiceHttpModule, System.Web.Ria, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
devient
<add name="DomainServiceModule" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Voilà après ça, mon projet compilait et marchait de nouveau, j’espère avoir été assez clair et que ça pourra vous dépanner si vous êtes dans le besoin.
Commentaires récents