none
deploiement de webpart & feature impossible RRS feed

  • Question

  • bonjour

    je travaille sur un poste client sous xp avec visual studio 2008. moss 2007 est installé sur un serveur distant.
    je sais que ce n'est pas la meilleure façon de travailler et les techniciens de ma société me preparent actuellement un serveur de dev avec tout ce qu'il faut. Mais j'aimerais comprendre pourquoi systématiqument lorsque je veux deployer une webpart toute simple ("hello world"), le déploiement plante et me renvoie le msg " la reference d'objet n'est pas définie à une instance d'objet". Est ce que c'est dans les propriétés du projet , lorsqu'on précise l'adresse du site sharepoint dans l'onglet 'debugger' -> demarrer avec le navigateur , que visual stuido n'arrive pas à fare reference au serveur ?
    est il impossible de déployer "a distance" depuis xp ?
    J'aimerais comprendre au moins pourquoi ça plante. J'ai lu pas mal de tutoraiux sur les déploiements.
    Faut il systematiquement utiliser le"stasAdm" ou le composant WSPBUILDER pour pouvoir deployer ?
    Merci de vos réponses, cela m'aidera beaucoup à mieux comprendre le circuit du déploiement

    Bonne journée à tous
    AL

    ci dessous le code de ma webpart , au plus simple :

    using

     

    System;
    using System.Runtime.InteropServices;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Serialization;
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.WebControls;
    using Microsoft.SharePoint.WebPartPages;

    namespace

     

    WebPartMatin

    {
    [

    Guid("bdd36216-dc0d-4cf1-bad3-1a353c85a50d")]

     

    public class WebPart1 : System.Web.UI.WebControls.WebParts.WebPart

    {

    public WebPart1()
    {
    }

     

    protected override void CreateChildControls()

    {

     

    base.CreateChildControls();

     

    Label label = new Label();
    label.Text =
    "Hello World";
    this.Controls.Add(label);

    }

    }

    }

    mardi 30 juin 2009 05:56

Réponses

  • Bonjour,

    Pour déployer un contrôle (web part en l'occurence) il est en effet preferable de passer par un package .wsp.

    Sinon il faut :
    - installer l'assembly dans le GAC (ou dans le bin de la web app mais vous vous exposez alors à plus de problèmes de configuration) 
    - modifier le web.config pour ajouter le namespace du contrôle dans les SafeControls
    - aller dans la collection de sites dans laquelle vous voulez tester votre web part, puis dans la gallerie des web parts, et créez le fichier .webpart correspondant
    - vous pouvez ensuite ajouter votre web part dans vos pages.

    Pourriez-vous expliquer la procédure que vous utilisez pour déployer ? cela pourrait nous aider à débusquer le problème.
    http://blogs.developpeur.org/anouvel
    • Marqué comme réponse algeox vendredi 10 juillet 2009 08:39
    mardi 30 juin 2009 08:43
  • Ravi d'avoir pu vous aider :)
    http://blogs.developpeur.org/anouvel
    • Marqué comme réponse algeox vendredi 10 juillet 2009 08:39
    mercredi 1 juillet 2009 14:18

Toutes les réponses

  • Bonjour,

    Pour déployer un contrôle (web part en l'occurence) il est en effet preferable de passer par un package .wsp.

    Sinon il faut :
    - installer l'assembly dans le GAC (ou dans le bin de la web app mais vous vous exposez alors à plus de problèmes de configuration) 
    - modifier le web.config pour ajouter le namespace du contrôle dans les SafeControls
    - aller dans la collection de sites dans laquelle vous voulez tester votre web part, puis dans la gallerie des web parts, et créez le fichier .webpart correspondant
    - vous pouvez ensuite ajouter votre web part dans vos pages.

    Pourriez-vous expliquer la procédure que vous utilisez pour déployer ? cela pourrait nous aider à débusquer le problème.
    http://blogs.developpeur.org/anouvel
    • Marqué comme réponse algeox vendredi 10 juillet 2009 08:39
    mardi 30 juin 2009 08:43
  • bonjour Arnault et merci pour vore reponse rapide.
    En fait, j'essaie justement de trouver LA procédure qui fonctionne bien et de m'y tenir mais je n'ai pas encore réussi à faire un seul déploiement, en ayant essayé plusieurs méthodes.
    Celle faisant reference à mon mesage de matin était la suivante :
    -creation d'un projet de type librairyClass
    -conception d'une classe simple (code dans msg de ce matin)
    -creation d'un fichier install.bat pour ajouter ma dll dans GAC (jusque la tout va bien)

    ensuite tjrs à partir de VS2008, dans l'onglet 'debugger' de la fenetre 'propriete du projet', j'indique l'adresse du site sharepoint ou je veux utiliser ma webPart ('http://monserveur:10029/9672') faut il bien faire ref à la racine du site ?
    ensuite je fais f5 pour deployer et ça plante .

    Je viens de faire la manip que vous avez decrit (copie de la dll dans le gac, modif du web config (c'est bien celui du site ?situé dans c/inetpub/wwwroot/wss/virtueldirectories/ monsite ?
    Mais quand je veux ajouter ma webPart dans la galerie, elle n'apparait pas ...
    Ceci dit, ne faut il pas non plus ajouter un fichier xml qq part dans le rep 12/template/feature .. ??

    Voila ou j'en suis. Ca n'a pourtant pas l'air si complqué que cela mais je n'arrive pas à faire la manip entièrement avec succès
    Merci pour votre aide
    AL
    mardi 30 juin 2009 10:15
  • Pour simplifier la procédure je vous conseille vivement l'utilisation de WSPBuilder, qui fera la modification du web.config de manière automatique et surtout, fiable.

    Il est très fréquent de faire des erreurs lorsque l'on renseigne le SafeControls à la main, notamment au niveau du fullname de l'assembly et du namespace.
    Si vous ne voulez pas utiliser WSPBuilder, utilisez au moins reflector pour récupérer par copier-coller le fullname de l'assembly et le namespace exact . J'insiste là dessus car votre namespace contient peut-être une erreur de frappe : WebPartMatin.

    Pour votre question, c'est effectivement le bon web.config.
    Après avoir mis la DLL dans le GAC, il faut en principe executer la commande IISRESET sur le serveur.

    Toutes les manips étant à faire sur le serveur, je ne pense donc pas qu'un déploiement via F5 puisse fonctionner. Par contre executer un script de déploiement côté serveur pourrait être utile : gacutils pour installer l'assembly dans le GAC, puis IISRESET.


    http://blogs.developpeur.org/anouvel
    mardi 30 juin 2009 12:06
  • Pour la feature, effectivement cela peut être utile pour provisionner le fichier .webpart dans la gallerie des web parts automatiquement, mais pour cela il faut déjà que vous disposiez de ce fichier. Pour le créer, le moyen le plus simple est de le créer via l'interface dans la gallerie des web parts.

    L'idéal c'est de ne s'occuper de la feature qu'une fois que la web part fonctionne, puisqu'elle n'est pas indispensable pendant le développement.
    http://blogs.developpeur.org/anouvel
    mardi 30 juin 2009 12:11
  • Merci vraiment Arnault pour votre aide.
    Peut être une piste au niveau du webConfig en vous relisant  :
    voici ma balise safecontrols :

    <

     

    SafeControl Assembly="WebPartMatin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5" Namespace="WebPartMatin" TypeName="*" Safe="True" />

    l'assembly et le namesapce sont identiques .. l'erreur pourrait elle provenir de là ??
    je pensais que les deux devaient être identiques

    AL

    mardi 30 juin 2009 14:08
  • Le namespace et le fullname de l'assembly peuvent être différents, pas de souci de ce côté là tant qu'ils sont chacun saisis correctement.

    Pour moi la balise a l'air ok.. Vous ne voyez toujours pas votre web part à la page http://application/_layouts/newdwp.aspx ?
    http://blogs.developpeur.org/anouvel
    mardi 30 juin 2009 16:09
  • bonjour Arnault

    non, tjrs pas de webPart sur cette page...
    je crois en fait qu'il s'agit d'un pb de reseau ou qq chose dans ce genre là.
    hier j'ai tout repris de a jusqu'a z et je suis allé voir sur le serveur si ma dll était bien présente.
    en fait quand j'accede à c:windows/assembly  par le raccourci reseau sur mon bureau, je la vois bien
    quand j'accede au serveur via le bureau à distance et que je vais voir dans  c:windows/assembly , elle n'apparait pas !!
    le raccourci bureau pointe bien sur le serveur, j'ai bien vérifié. Je vais donc attendre que les techniciens me preparent le serveur de developpement ainsi j'espere ne plus avoir ce genre de pb. Merci en tout cas pour votre aide rapide et précise.

    Dans un autre ordre d'idée, je vais devoir écrire un bout de code 'autre que du hello world ;-)' qui permettra d'envoyer un mail automatique des la saisie d'un formulaire (liste personnalisée simple - pas en infopath -. J'ai vu que je devrais passer par la conception d'une feature de type "event handler" mais savez vous si je peux recuperer l'adresse mail d'un utilisateur à partir du nom saisi dans le formulaire (en fait c'est une zone du formulaire 'choix de personne' dans laquelle on choisit, soit un groupe sharepoint, soit un user (dans ce cas precis, on choisi un user) et le but est d'envoyer un mail à l'utilsateur choisi - la fonction "m'avertir" gerant elle, l'envoi auto mais à l'utilisateur connecté ...

    Merci et bonne journée
    Cordialement
    AL
    mercredi 1 juillet 2009 06:08
  • Bonjour,

    je ne pense pas que vous puissiez installer une assembly dans le GAC depuis un raccourci réseau. Il doit falloir l'installer avec l'utilitaire GACUTIL.exe depuis le serveur. Installer une assembly dans le GAC ne revient pas simplement à faire un copier-coller, pour preuve la vue qui vous ai montrée lorsque vous naviguez dans C:\Windows\Assembly n'est pas celle d'un répertoire normal.

    Pour votre question en effet un event receiver correspond parfaitement, vous pourrez récupérer l'objet SPUser correspondant à l'utilisateur indiqué dans un des champs de l'élément.

    Cordialement,
    http://blogs.developpeur.org/anouvel
    • Proposé comme réponse Arnault Nouvel mercredi 1 juillet 2009 06:25
    mercredi 1 juillet 2009 06:24
  • UN GRAND MERCI  A VOUS !
    Bonne journée
    AL
    mercredi 1 juillet 2009 07:18
  • Ravi d'avoir pu vous aider :)
    http://blogs.developpeur.org/anouvel
    • Marqué comme réponse algeox vendredi 10 juillet 2009 08:39
    mercredi 1 juillet 2009 14:18