Publié dimanche 27 avril 2008 15:34 par Arnault Nouvel

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

Arnault Nouvel

# 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

Arnault Nouvel


Les 10 derniers blogs postés

- TechDays Paris 2012 : Session pleinière jour 3 par Blog Technique de Romelard Fabrice le il y a 19 heures et 8 minutes

- Mishra Reader : un lecteur RSS très Zune Style en Open Source ! par Cyril Sansus le il y a 21 heures et 41 minutes

- [framework 4] Les Tasks et le Thread UI par Fathi Bellahcene le 02-09-2012, 00:33

- Workflow Foundation 3 a un pied dans la tombe par Blog de Jérémy Jeanson le 02-08-2012, 22:15

- TechDays Paris 2012 : Nouvelles tendances du poste de travail - Bring Your own PC par Blog Technique de Romelard Fabrice le 02-08-2012, 19:42

- TechDays Paris 2012 : System Center Service Manager 2012 Vue d’ensemble par Blog Technique de Romelard Fabrice le 02-08-2012, 17:32

- TechDays Paris 2012 : Pleinière second jour par Blog Technique de Romelard Fabrice le 02-08-2012, 16:23

- TechDays Paris 2012 : Retour d'expérience sur la mise en place d'un Cloud Privé par Blog Technique de Romelard Fabrice le 02-08-2012, 16:04

- TechDays Paris 2012 : Comment SharePoint a sauvé mes TechDays par Blog Technique de Romelard Fabrice le 02-07-2012, 23:59

- Perspective 3.0 pour Silverlight 5.0 par Perspective le 02-07-2012, 22:39