[Silverlight] Ajouter en référence une assembly .NET

Hello les gens, bonne année 2010 toussa,

Pour pouvoir rédiger un petit compte rendu sur la nécessité de passer ou non à Silverlight, j’ai créé un mini projet bidon pour tester du CRUD (Create Read Update Delete) sur du MS CRM 4.0. A ma surprise, je ne peux absoluement pas importer les librairies du SDK CRM 4.0. Visual Studio 2008 SP 1 ne veut que des librairies Silverlight.

J’appelle mon copain Google pour trouver une solution à ce problème. Je trouve un topic en anglais, que Microsoft serait sur le point de revoir leur prochaine version pour permettre d’utiliser des librairies purement .NET. Mais bon, j’ai aucun lien qui me pointe sur une quelconque confirmation de Microsoft ou une news dessus.
Je me dis que c’est vraiment mort.

Par contre, il existe une solution qui consiste à linker le fichier du code source d’une librairie .NET à un projet Silverlight. Ok, cool, c’est bon à savoir. Mais moi, je fais comment quand je n’ai pas le code source et juste des assemblies ?

Et là, je tombe sur ce magnifique blog qui m’explique comment tromper Visual Studio pour que je puisse travailler avec mes Assemblies full .NET dans mon projet Silverlight. La manipulation (voir carrément bidouille) proposée est super longue et chiante. Et je me pose vraiment la question si c’est vraiment fiable, propre, etc… (je parle de la 1e solution, celui qui fait appel à ILDasm et ILasm). Surtout qu’en faisant ce genre de manip, je risque de ne pas avoir de support de Microsoft concernant la CRM (ou pas).

D’ailleurs je summon Glop.

Donc du coup je bloque. Si c’est une solution viable ou non. Ca me permettra de conclure plus facilement mon compte-rendu.

Voilà, voilà.

Edit: dans l’article que j’ai linké, il y a un passage de la manip que j’ai mal saisie. On demande bien à un moment de modifier aussi la valeur du PublicKeyToken des assemblies que je veux utiliser sur Silverlight ?

Tu peux oublier ca pour ton assembly CRM 4… Ca ne marche qu’avec des assemblies qui se suffisent à elles-même et qui ne font appel qu’à ce qui est disponible dans la BCL Silverlight (autant dire… quasiment rien de ce que doit utiliser l’assembly CRM au niveau réseau etc.).

Je ne connais pas bien CRM, mais il me semble que tu peux aussi dialoguer avec par Web Services non ?

[quote=« girafologue, post:2, topic: 50596 »]Tu peux oublier ca pour ton assembly CRM 4… Ca ne marche qu’avec des assemblies qui se suffisent à elles-même et qui ne font appel qu’à ce qui est disponible dans la BCL Silverlight (autant dire… quasiment rien de ce que doit utiliser l’assembly CRM au niveau réseau etc.).

Je ne connais pas bien CRM, mais il me semble que tu peux aussi dialoguer avec par Web Services non ?[/quote]

Dans l’idéal, c’était de pouvoir utiliser le SDK de la CRM 4.0 + notre Framework interne. Mais voilà, avec le problème que j’ai noté plus haut, je ne peux pas.
Entre temps et surtout hier, j’ai trouvé une doc technique sur Silverlight et MS CRM 1.2 (une très vieille version) sur MSDN. Et après test, je peux toutefois dialoguer via les web services. Bon, ca implique pas mal de chose de notre côté notamment les couts de dév bien que techniquement ce n’est pas bien compliqué.

Mais je trouve dommage de pas pouvoir référencer des assemblies .NET tout court. J’espère que la version 4.0 de Silverlight permettra ce genre de liberté ou le SDK CRM 5.0. Mais ce n’est certainement pas pour aujourd’hui. :smiley:

Ca ne pourra jamais etre le cas, vu que ton appli Silverlight tourne chez le client, et non pas sur ton serveur WEB. C’est un peu comme ci on demandait a pouvoir referencer un composant PHP en Javascript.

Par contre, ce que Microsoft prevoit, c’est de fournir des API cote client qui consomment les services WEB de leurs produits (Sharepoint 2010 par exemple) et les exposer sous une forme plus pratique a manipuler par Silverlight

[quote=“girafologue, post:4, topic: 50596”]Ca ne pourra jamais etre le cas, vu que ton appli Silverlight tourne chez le client, et non pas sur ton serveur WEB. C’est un peu comme ci on demandait a pouvoir referencer un composant PHP en Javascript.

Par contre, ce que Microsoft prevoit, c’est de fournir des API cote client qui consomment les services WEB de leurs produits (Sharepoint 2010 par exemple) et les exposer sous une forme plus pratique a manipuler par Silverlight[/quote]

Ce n’est pas un problème. MS CRM a un mode déconnecté et donc un client CRM, le web service CRM et la base qui va avec (après faut voir en fonction des besoins du client).