Monthly Archives: novembre 2010

Déboguer une page d’application dans SharePoint 2010

N’étant pas encore tout à fait à l’aise avec la structure de SharePoint 2010, j’ai rencontré un bogue étrange lorsque j’ai tenté de déboguer une page d’application que je tentais de créer.  Je n’arrivais jamais à voir ma pile d’exécution dans mon navigateur, ce qui m’aurait aidé à trouver le problème de mon code…

Après quelques minutes de “gossage”, voilà que j’ai enfin trouvé la solution à mon problème!  Le web.config présent au dossier LAYOUTS du 14-Hive, permet dorénavant d’écraser des configurations initiales du web.config de l’application web.  Voici donc comment faire pour permettre à tous de déboguer les pages d’application.

Lorsque vous avez l’erreur suivante, vous ne pouvez pas débogguer une application :

Afin de résoudre, voici les étapes à suivre :

  • Modifier le fichier web.config de votre application web
<SafeMode MaxControls="200" CallStack="true" DirectFileDependencies="10" TotalFileDependencies="50" AllowPageLevelTrace="false">
<customErrors mode="Off" />
<compilation batch="true" debug="true" optimizeCompilations="true">
  • Modifier le fichier web.config du dossier 14/TEMPLATES/LAYOUTS
<compilation batch="true" batchTimeout="600" maxBatchSize="10000" maxBatchGeneratedFileSize="10000" />
<customErrors mode="Off" />

Vous aurez maintenant vos erreurs affichées à l’écran :

Bon déboguage!

Des ressources intéressantes sur SharePoint

Lorsque vous êtes à court d’idées quant à une problématique technique lors du développement ou l’administration dans un environnement SharePoint, il est intéressant d’avoir des petites ressources cachées dans sa manche afin d’arriver à résoudre nos problèmes !

Ressources pour développeurs

SharePoint Overflow

Ce site est selon moi celui qui est rempli du plus grand nombre d’informations pertinentes lors de la recherche de solutions.  C’est un site où je contribue (voir mon profil) afin d’aider la communauté à trouver des solutions à divers problèmes.  La plateforme StackExchange est d’une puissance incroyable, permettant de résoudre pratiquement n’importe quel problèmes technique.  À voir !

StackOverflow

Un site beaucoup plus général que le dernier.  Fondateur de la plateforme StackExchange (premier site, duquel une panoplie peuplent maintenant le web), il est fort utile lorsque les problèmes rencontrés sont plus du niveau .NET ou même ASP.NET.  Quelques ressources SharePoint sont aussi disponibles, sans être la plus grande banque d’informations.  Définitivement à garder dans ses favoris!

CodePlex

Ce site est une banque de code source et d’applications basées sur les plateformes de Microsoft, dont .NET.  Plusieurs applications ou API sont disponibles.  De celles-ci, en jetant un coup d’oeil au code qu’elles exposent, il est aussi possible de trouver une réponse à nos questions.  Ce site est plus difficile à utiliser pour trouver des réponses, par contre, il est très utile pour trouver des solutions déjà utilisables.

Ressources pour intégrateurs

Blogue d’Heather Solomon

Ce site est une mine d’or d’information sur la présentation au niveau de SharePoint.  Il est utile afin de comprendre et bien appliquer les règles CSS exigées par SharePoint.

Ressources pour administrateurs

ServerFault

Un site, encore une fois issu de la famille de StackExchange, qui permet aux administrateurs de fermes SharePoint de résoudre des problèmes qui sont situés beaucoup plus près de la machine.  SharePoint, étant une plateforme d’intégration entre de multiples technologies Microsoft, cet outil vous permet de débogguer votre environnement.  Très utile!

L’attirail du développeur

Le nombre de fois où j’ai dû préparer une plateforme prête à recevoir du développement SharePoint ne se compte plus sur les doigts d’une, deux ou même dix mains… Un environnement de développement convivial et pratique est l’outil #1 du développeur SharePoint. Par contre, il doit savoir s’outiller afin d’arriver à un travail optimisé. Ce billet a pour but de partager la liste des outils nécessaires à un développeur SharePoint afin d’arriver à un développement optimal.

Virtualisation

Comme le développement doit absolument être effectué sur une machine munie d’une système d’exploitation de type serveur, il devient utile de pouvoir virtualiser notre environnement.  Note importante : abusez le plus possibles des fonctionnalités avancées des différentes plateformes de virtualisation comme la prise d’instantannés (snapshots) et des fonctionnalités de gabarits (templates).  Ces petites merveilles vous feront économiser temps, argent et beaucoup de frustration.

VMWare

La plateforme populaire de virtualisation VMWare est un incontournable.  Son seul inconvénient est définitivement son prix.  Par contre, il s’agit définitivement de la plateforme de virtualisation de rêve.

VirtualBox

Cette plateforme de virtualisation est relativement complète.  On dit même qu’elle arrive à faire fonctionner nos machines virtuelles plus rapidement que VMWare!  De plus, celle-ci est offerte en mouture “open source”, ce qui permet d’avoir un environnement virtualisé pour… gratuit!

Outils de développement

Les différents outils de développement qui sont offerts aux développeurs SharePoint sont nombreux et souvent très utiles.  Il est important par contre de bien essayer chacun des outils afin de bien comprendre leurs avantages et inconvénients avant de les intégrer à votre routine de développement.

Visual Studio 2008

La pierre angulaire du développement de solutions SharePoint.  L’environnement de développement de Microsoft est la clé de votre succès.  Bien maîtriser les outils de Visual Studio vous permettra d’améliorer chacun des aspects de votre développement SharePoint.

Team Foundation Server 2008

Chaque équipe de développement se doit de se munir d’une solution de gestion de code source.  Celle-ci, développée par Microsoft s’intègre parfaitement bien avec l’environnement Visual Studio.  De plus, cet outil vous permet de gérer vos projets grâce aux différentes tâches que vous pouvez créer afin de suivre la trace du travail de chacun des développeurs.

STSDEV

Selon moi, l’élément qui facilite le plus le développement (et surtout le paquetage de solutions) est STSDEV.  Cet outil, qui est simplement une suite d’instructions MSBuild, vous permet de concentrer toutes vos énergies sur le développement des fonctionnalités pour votre solution SharePoint, plutôt que concentrer vos énergies sur la rédaction de vos fichiers .ddf, .wsp, etc.  Cet outil automatise tout l’aspect de paquetage et du déploiement de solutions à même votre environnement de développement.  Un bijou.

Visual Studio extensions for WSS 1.2

Cet outil est utile pour une partie de ses fonctionnalités.  Les gabarits fournis par Microsoft pour la partie du développement sont assez rudimentaires, pour ne pas dire quasi inutiles.  Par contre, un outil très intéressant est livré avec ce logiciel : Solution Generator.  Cet utilitaire permet de faire de l’ingénierie inversée (reverse engineering de vos listes afin de créer des définitions de listes.  Il vous économise de longues heures d’écriture de requêtes CAML afin de créer vos vues, vos champs, vos types de contenus, etc.

CTExplorer

SharePoint vous offre une plateforme très bien construite afin de créer des colonnes et des types de contenus.  Par contre, lorsque vient le temps d’incorporer ces types de contenu et ces colonnes à vos solutions, cela devient un calvaire, puisqu’il faut créer le schéma XML associé à chacun de ces éléments.  CTExplorer vient faciliter le travail en exportant et en formattant le XML de chacun de ces éléments sans se casser la tête.

SPTraceView

Le débogage des fonctionnalités SharePoint peut parfois être longue et érintante.  Cet outil est à l’écoute des différents endroits où SharePoint laisserait une trace d’erreurs ou d’exceptions déclenchées par votre code et vous en informe au moment où cela se produit.  On peut alors facilement trouver le problème et le corriger sans avoir à déboguer pendant des heures.

ULSViewer

Le fichier de log de SharePoint est volumineux, souvent rempli d’élément qui sont plus ou moins pertinents et est pratiquement illisible.  L’utilitaire ULSViewer vous permet de charger un fichier log et de le voir sous forme de tableau.  Une merveille lorsqu’on cherche à déboguer plus aisément.

Reflector

Vous cherchez comment SharePoint fait pour faire tel ou tel autre truc? Vous pouvez maintenant consulter une très grande partie du code de SharePoint (et de tout code .NET) à l’aide de l’outil Reflector.  Très utile lorsque des opérations, pourtant simples en apparence, deviennent très complexes lors de leur implémentation.  Cet outil vous aidera à comprendre la façon de faire des développeurs qui ont conçu SharePoint.

U2U CAML Builder

Un aspect relativement complexe de la recherche d’information dans SharePoint est son langage de requêtes.  Le CAML (Collaborative Application Markup Language) est un langage XML qui permet de faire des requêtes en spécifiant la grande majorité des actions qu’il serait possible de faire dans un environnement SQL.  Par contre, quelques subtilités peuvent nous hanter pendant des heures si nous ne connaissons pas pleinement la plateforme.  L’outil U2U CAML Builder vous permet de générer des requêtes CAML à partir de listes existantes.  Un vrai économiseur de temps!

SharePoint Designer

L’ami ou l’ennemi du développeur SharePoint? Ça dépend! Afin de tester des pages maîtres, de concevoir du CSS ou même pour rapidement faire des preuves de concept, il s’agit de l’outil idéal.  Par contre, pour faire du “développement” avec l’aide des flux de travail et des composantes webpart d’affichage de listes, il en est tout autrement.  À utiliser avec modération, mais peut souvent vous sortir du trouble.

12 Hive

La très grande majorité de mes questions ont été répondues par la structure de SharePoint elle-même.  Fouillez dans le 12-Hive lorsque vous avez des questions sur des formats de fichiers XML, des définitions de listes, des définitions de sites, des champs personnalisés, etc.  Tout y est!

Outils d’administration

SharePoint Manager 2007

L’outil le plus complet de tous est définitivement SharePoint Manager 2007.  Cet outil vous permet de naviguer dans votre ferme de serveurs en ayant un aperçu global sur tous les éléments qui sont présents dans SharePoint.  Un logiciel à détenir absolument.

STSDEV : Pourquoi tout développeur devrait l’utiliser.

Quand la version 2007 de SharePoint est devenue disponible en 2007, la lacune principale, du point de vue du développeur, était définitivement le manque d’outils.  À cette époque, une solution, aussi complexe soit-elle, était disponible.  Vous vous rappelez lorsque vous étiez obligés de créer vos fichier .ddf à la main ? Quand vous deviez noter chacun des fichiers à développer et qu’il était immanquable que les premiers déploiements de votre solution allaient amener leurs doses de frustrations…

On a commencé à développer des outils… Majoritairement trois outils sont sortis du lot au fil des années qui ont suivies :

  • Les extensions pour Visual Studio, bâties par Microsoft
  • WSPBuilder
  • STSDEV

Ces outils, bien que relativement utiles, ont chacun des avantages et des désavantages.  Évidemment, nous devions tous les tester.  Certains faisaient une partie du travail, tandis que d’autre ne permettaient pas tel ou tel autre truc.  J’ai fait mon choix, j’utilise celui qui me permet de faire ce que je veux, comme je le veux…

STSDEV

Quand je suis tombé sur STSDEV, on me l’a fortement conseillé pour un projet.  Cependant, j’étais relativement junior en développement SharePoint, et c’était une courbe d’apprentissage très abrupte pour un premier “vrai” projet… Par contre, c’est grâce à ce projet que j’ai compris la complexité du développement SharePoint et la puissance de l’outil STSDEV.

Cycle de développement

L’outil me permet d’avoir un cycle de développement propre, à chaque fois que je veux tester ma solution.  Quand je crée une fonctionnalité, et que celle-ci doit être modifiée dans mon environnement, je préfère de loin la méthode prescrite par Microsoft, c’est-à-dire celle où on utilise les fonctionnalités de SharePoint pour mettre à jour les solutions.  Je déteste passer “par derrière” pour faire des modifications… Je sais que SharePoint ne grognera pas, mais je suis certain qu’il est pas du tout heureux de ce que je lui fais vivre… Modifier un fichier XML directement sur le disque, ça m’horripile.  Par contre, quand j’utiliser les fonctionnalités de mise à jour d’une solution via les commandes stsadm (stsadm -o upgradesolution), je sais que je fais la bonne chose.  Peut-être que mon cycle développement est un peu plus lent à chaque fois que je dois modifier ma solution, par contre, mon cycle de développement m’assurer de la validité de mon paquetage en tout temps.  Comme mon fichier .wsp est généré à chaque compilation, je sais qu’en tout temps, j’ai une solution présentable.  Peut-être est-elle remplie de bogues.  Peut-être est-elle non fonctionnelle.  Mais je peux la déployer partout.  Et ça me plaît.

Flexibilité

J’adore comment STSDEV fonctionne… Habituellement.  Il m’arrive d’avoir des modifications au comportement à effectuer pour des raisons particulières. Par exemple, pour un projet que vous venons de terminer, nous avions à livrer des scripts qui devaient ajouter, déployer et activer les solutions ainsi que de créer une structure de collections de sites et de sites relativement complexes.  Afin de s’assurer de la validité du portail, nous exécutions souvent les scripts.  Qu’est-ce qui arrivait plus souvent qu’autrement ? Nous oubliions de récupérer nos fichiers .wsp et les inclure dans le répertoire des scripts (qui allait devenir notre livrable final). Résultat : nous exécutions les mauvaises versions des solutions.  Du temps perdu… Afin de régler le problème, puisque STSDEV est en fait seulement une série de commandes du standard Microsoft MSBuild, nous avons ajouter un simple xcopy de nos .wsp générés dans notre dossier de scripts.  Le plus gros des avantages ? Nos fichier .targets (qui incluent les inscructions MSBuild) étaient conservés dans notre gestionnaire de fichiers.  Par besoin d’avoir des instructions pré ou post compilation.  Simple, efficace, peu coûteux.

Aucune intégration à Visual Studio

L’atout majeur de STSDEV est qu’il ne demande en aucun temps une version de Visual Studio.  Puisqu’il s’agit d’une simple application console (fait en .NET et très facilement modifiable selon vos besoins…), une intégration à Visual Studio semblait complètement inutile.  Vous utilisez une version spéciale de Visual Studio ? Pas de problème ! Les solutions générées n’utilisent ni de gabarits de projets, ni de fonctionnalités ajoutées à Visual Studio.  Valide en tout temps, pour n’importe qui.  Dans un environnement où plusieurs développeurs peuvent utiliser la même solution, dans des environnements complètement différents (Visual Studio 2010, 2008, 2005), c’est un atout de taille.  Le projet reste valide.

Conseil pratique

Pour les équipes de développement qui travaillent avec un gestionnaire de source, je conseille fortement d’inclure les fichiers binaires de STSDEV à même votre solution Visual Studio.  Pourquoi ? Afin de valider que la version de STSDEV utilisé soit la même tout au long du projet !  Il sera par contre nécessaire de modifier une ligne dans les fichiers .target de vos différents projets.  Cette ligne permettra de référer à votre STSDEV qui sera relatif à votre projet, et non aux fichier binaires sur disque. Référez-y de la façon suivante :

<STSDEV>"$(SolutionDir)CHEMIN.VERS.STSDEV\stsdev.exe"</STSDEV>

Et mettez vos binaires dans un dossier à même votre solution, qui sera au même niveau que vos projets SharePoint.

Conclusion

J’utilise STSDEV, et j’en suis fier.  J’ai de la difficulté à comprendre les gens qui ne veulent pas l’utiliser.  Je comprends que les autres outils permettent aussi des choses comparables… Mais jamais avec les trois éléments clés décrits dans cet article.  Vous êtes curieux ? Je vous conseille de lui donner sa chance.  Je suis certain que vous serez facilement convaincu de l’utiliser dans la majorité de vos projets!