Publié dimanche 27 avril 2008 15:34 par anouvel

Sharepoint : La CodeTesterWebPart en pratique

Lorsque l'on développe sous Sharepoint, à chaque fois que l'on modifie son code il faut compiler, packager, déployer, recycler son application pool, et attendre que Sharepoint s'initialise. On peut alors vérifier l'éxécution du code si on a la chance d'avoir un bouton qui le déclenche directement, mais celui-ci peut aussi être éxécuté en fin de workflow ou lors d'évènements plus ou moins évidents à reproduire.

Tester du code dans son contexte d'exécution est donc souvent une tâche longue et fastidieuse pour le développeur Sharepoint.

La CodeTesterWebPart permet la compilation et l'éxécution instantanée de code C#. Elle est disponible depuis quelques jours sur CodePlex : http://www.codeplex.com/CodeTesterWebPart

On dispose d'une boite de texte dans laquelle on saisit le code que l'on souhaite, et d'un bouton "Run that method!" qui permet de l'éxécuter instantanément. On peut modifier la liste des assemblies référencées (en spécifiant leur chemin sur le disque) ainsi que les usings :

ListLists

Le bouton "Save Inputs" permet de sauvegarder les références, usings, et le code grâce au concept de Personnalization.

Si il y a des erreurs de compilation, elles sont affichées :

CompilerResults

La méthode de test dispose de deux arguments permettant de tester du code d'interface graphique : la page courante et un placeholder qui est situé juste en dessous du corps de la webpart. Ici, on joue avec un diagramme de gantt et on injecte du javascript dans la page :

Gantt2

Autre avantage, le code s'exécute avec le contexte courant. On peut donc tester tout ce qui concerne les droits. Par exemple, avec un compte visiteur, si on tente de modifier le titre du site courant avec la CodeTesterWebPart, on est redirigé vers la page Access Denied. On se rend alors compte qu'il faut utiliser  SPSecurity.RunWithElevatedPrivileges, le code suivant fonctionne sans problème :

SPSecurity

On pourrait se dire que les limites sont atteintes dès lors que l'on veut tester du code récursif. Non, c'est possible aussi ! Il suffit de tricher un peu sur le parenthèsage. Après tout, le code est compilé tel qu'il est rendu à l'écran.

Recursive

Mais comment ca marche ?!

Le namespace System.CodeDom contient des classes qui permettent de compiler dynamiquement une assembly à partir de code source sous forme de chaine de caractères. La CodeTesterWebPart compile ainsi une assembly en mémoire, il n'y a pas d'écriture sur le disque. La méthode TestMethod est ensuite appellée par reflection, de manière tout à fait classique. Pour les plus curieux, le code source est disponible sur CodePlex.

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 :

# re: Sharepoint : La CodeTesterWebPart en pratique @ dimanche 27 avril 2008 18:45

carrément sympa :)

phil

# re: Sharepoint : La CodeTesterWebPart en pratique @ dimanche 27 avril 2008 23:58

Coder sous SharePoint, c'est beau :-)

Tu as eu une très bonne idée Arnault :-)

Gribouillon

# re: Sharepoint : La CodeTesterWebPart en pratique @ lundi 28 avril 2008 08:13

Merci !

A priori la prochaine étape serait la gestion du VB.NET, mais si vous avez d'autres idées d'évolution (non, pas intellisense...) je suis preneur

anouvel

# re: Sharepoint : La CodeTesterWebPart en pratique @ lundi 28 avril 2008 14:46

Arf, moi j'aime bien, surtout la pile de compilation avec les warnings.

Good job !

Perso, je rajouterais un petit truc : pouvoir plier/déplier la partie code et demo

Ainsi, si le code est vraiment long, on peut le replier pour voir de suite le résultat.

Un dernier point :

Ca me rappelle cependant un autre petit projet un poil similaire de Carlos Segura

- csegScript -

http://www.ideseg.com/CategoryView,category,csegScript.aspx

http://www.ideseg.com/csegScriptWebpart10WriteAndTestCodeDirectlyIntoYourSharepointSite.aspx

>>> Bon en même temps, je suis un archiviste humain des rss SharePoint :)

l'apporche d'une liste de sample à evaluer avec param et compagnie est un belle approche non ?

A++ et encore bravo

themit

# re: Sharepoint : La CodeTesterWebPart en pratique @ lundi 28 avril 2008 15:51

Effectivement, son projet est similaire et a l'air sympa aussi

Bonne idée le pliage du code je vais voir ce que je peux faire ;)

merci de ton retour

anouvel


Les 10 derniers blogs postés

- SQL Server : PHP et SQL Server par SQL Server vu par Christian Robert le il y a 2 heures et 55 minutes

- [TechDays 2010] Windows Azure AppFabric (CLO305) par NeuroCypher's Blog le il y a 4 heures et 7 minutes

- Outils d’import avec mise à jour dans Microsoft Dynamics CRM par Bianca le il y a 4 heures et 15 minutes

- SQL Server : Développer un AddOn pour SQL Server Management Studio (SSMS) par SQL Server vu par Christian Robert le il y a 4 heures et 30 minutes

- Editeur XAML de Visual Studio: comment aligner les attributs les uns en dessous des autres automatiquement par Michel Perfetti [Miiitch] le il y a 5 heures et 39 minutes

- MIX10 a Las Vegas : immersion par Perspective le il y a 10 heures et 49 minutes

- [RIA Services] Maitre - Détail et DomainDataSource par Blog Technique d'Audrey PETIT le il y a 17 heures et 24 minutes

- CSDL Function par Matthieu MEZIL le 03-14-2010, 07:23

- LINQ To Entities par Matthieu MEZIL le 03-14-2010, 03:51

- Faire apparaitre l’onglet ‘Développeur’ dans Office 2010 par Julien Chable le 03-13-2010, 01:41