none
AjaxControlToolkit : assembly introuvable RRS feed

  • Question

  • Bonjour tout le monde,

    Je pensais avoir suivi les instructions de l'atelier 2 du coach ASP.Net Ajax, Activer les extensions Ajax sur vos projets web, pour installer Ajax et l'AjaxControlToolkit dans la solution de l'atelier précédent, mais j'ai dû faire un couac quelque part, et j'ai du mal à le localiser.

    En effet, quand à la page 19 on me dit de faire un glisser-déplacer d'un contrôle du toolkit, par exemple l'accordion, il m'est répondu que l'assembly [chemin de AjaxControlToolkit.dll dans le répertoire bin de l'application] est introuvable.

    Dans le web.config j'avais bien

    	<controls>
                	<add tagPrefix="asp" namespace="System.Web.UI" 
                                     assembly="System.Web.Extensions, Version=1.0.61025.0, 
                                     Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                  <add tagPrefix="ajaxToolkit" namespace="AjaxControlToolkit" 
                                     assembly="AjaxControlToolkit" />
           </controls>

    mais quand j'essaie de l'utiliser, si je reformule le message obtenu : "AjaxControlToolkit, y en a pas connaître."

    Je précise que le site de démonstration dans Program Files fonctionne bien, et pourtant il ne déclare comme assembly que System.Web.Extension.

    La fiche How to load an assembly at runtime that is located in a folder that is not the bin folder of the application  m'a suggéré d'utiliser la commande SN pour trouver la clef publique de l'assembly, et la section du web.config est devenue :

      <controls>
    	<add tagPrefix="asp" namespace="System.Web.UI"
               assembly="System.Web.Extensions, 
               Version=1.0.61025.0, Culture=neutral, 
               PublicKeyToken=31bf3856ad364e35"/>
    	<add tagPrefix="ajaxToolkit" 
               namespace="AjaxControlToolkit" 
               assembly="AjaxControlToolkit, 
               Version=1.0.20229.20821, 
               Culture=neutral, 
               PublicKeyToken=28f01b0e84b6d53e" />
      </controls>

    et en dessous j'ai même ajouté :

       <assemblies>
    (...)
            <add assembly="AjaxControlToolkit,Version=1.0.20229.20821, Culture=neutral,  PublicKeyToken=28f01b0e84b6d53e" />
      </assemblies>

    mais la réponse est toujours la même.

    Le site de démonstration est pourtant d'une désarmante simplicité, puisqu'il ne déclare ni le contrôle AjaxControlToolkit, ni l'assembly. En fait l'assembly est déclarée dans chaque page, j'ai essayé ça dans AffairesSansRisque et le résultat n'a pas varié d'un iota, il ne veut pas jouer d'accordéon.

    J'ai réalisé que la page que j'essayais de modifier était dans un répertoire qui avait son propre web.config, alors que je modifiais celui de la racine. Alors j'ai exclu du projet le web.config du répertoire, mais ça n'a rien changé. Certes exclure ce web.config du projet supprime les règles de sécurité sur le répertoire, mais ça c'est un autre sujet.

    Aurais-je oublié un truc tout simple ?


    • Modifié Gloops samedi 12 mai 2012 10:37
    samedi 12 mai 2012 10:26

Réponses

  • Bonjour,

    Je vous conseille de procéder selon les étapes suivantes pour installer correctement la librairie de composants AjaxToolKit:

       1.  Dé-référencer la librairie AjaxToolKit depuis votre projet
       2.  Récupérez la dernière version de la librairie AjaxToolKit (.NET 3.5 ou 4 selon votre projet) depuis le site officiel
       3.  Ouvrez une page Web ASPX dans Visual Studio
       4.  Se Placer dans le volet "Boîte à outils"
       5.  Ajouter un onglet dans la boîte à outils (clique droit dans la boîte à outils>Ajouter un onglet) et le nommer (Composants AjaxToolkit par exemple)
       6.  Décompresser l'archive d'AjaxToolkit récupérée, dans un répertoire
       7.  Se Placer dans l'onglet créé dans la "Boîte à outils"
       8.  Ajouter les composants AjaxToolkit en faisant un clique droit>choisir les éléments... dans l'onglet. Attendre un peu l'apparition de la boîte de référencement des composant (un peu lent des fois)
       9.  Une nouvelle boîte de dialogue s'affiche. Dans le volet "Composants .NET Framework" de la boîte de dialogue qui s'affiche cliquer sur parcourir et choisir la DLL AjaxToolkit téléchargée (cf. image ci-dessous)
       10. Cliquer sur OK
       11. Les composants d'AjaxToolkit sont installés et prêts à être utilisés sans faire de code, de manière propre, rapide et efficace (Visual Studio référence automatiquement la librairie dans votre projet)
       12. Pour utiliser les composants, Effectuer du drag and drop depuis la boîte à outils dans une page web ASPX ou ecrire directement le code (le tagPrefix généré par VisualStudio par défaut est asp, celui-ci peut bien sûr être modifié)

    Voici la boîte de dialogue de référencement:



    Voici une capture de Visual Studio:

    Cordialement,


    My blog

    Whether you’re a construction worker, a forum moderator, or just someone that likes helping people. I think these guidelines can be helpful in keeping you helpful when being helpful.



    • Modifié Link.frEditor samedi 12 mai 2012 19:34 Ajout du lien vers le site d'AjaxToolKit
    • Proposé comme réponse DotNetMatt dimanche 13 mai 2012 12:54
    • Marqué comme réponse Gloops dimanche 13 mai 2012 12:56
    samedi 12 mai 2012 19:29
    Auteur de réponse

Toutes les réponses

  • Bonjour,

    Est-ce que tu procèdes de la façon suivante ?

    • En haut de la page où tu veux utiliser un control du Toolkit, mettre la déclaration suivante :
    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajax" %>
    • A l'endroit où tu veux utiliser un composant du toolkit, utiliser ceci (pour un Calendar par exemple) :
    <ajax:Calendar ID="Calendar1" runat="server">...</ajax:Calendar>
    Est-ce que ça change quelque chose à ton problème ?

    Cordialement,
    Mathieu

    Consultant SI - Technos Microsoft .NET / Dynamics / MSSQL + BI

    samedi 12 mai 2012 14:10
  • Bonjour,

    Est-ce que tu procèdes de la façon suivante ?

    • En haut de la page où tu veux utiliser un control du Toolkit, mettre la déclaration suivante :
    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajax" %>
    • A l'endroit où tu veux utiliser un composant du toolkit, utiliser ceci (pour un Calendar par exemple) :
    <ajax:Calendar ID="Calendar1" runat="server">...</ajax:Calendar>
    Est-ce que ça change quelque chose à ton problème ?

    Cordialement,
    Mathieu

    Consultant SI - Technos Microsoft .NET / Dynamics / MSSQL + BI

    Ah oui, le créer à la main en mode source ?

    Voilà ce que ça donne :

    "L'élément 'Calendar' n'est pas un élément connu. Ceci peut se produire si il existe une erreur de compilation dans le site web."

    ça a au moins l'avantage d'être cohérent.

    Je me doutais un petit peu qu'il devait y avoir une erreur quelque part, mais j'avoue que ça me fait un peu juste pour la corriger.

    Si je lance la génération j'ai un deuxième message d'erreur :

    "Balise server inconnue 'ajaxToolkit:Calendar'"

    Juste au-dessus, entre la balise Page et la balise Content, nous avons, copié du site de démonstration :

    <%@ Register
        Assembly="AjaxControlToolkit"
        Namespace="AjaxControlToolkit"
        TagPrefix="ajaxToolkit" %>


    Donc, j'ai l'impression que c'est une autre formulation du message qui m'a été délivré précédemment : "AjaxControlToolkit y en a pas connaître". Pourtant, c'est marqué juste au-dessus (ah oui ça fait double emploi avec le web.config -oui mais si je n'en mets qu'un ça ne marche pas non plus), et la dll est dans le répertoire bin.

    On dirait que je me suis pris les pieds dans le tapis ?

    Voyons voir si je peux en savoir un peu plus ... Je passe par Outils / Options de démarrage, et dans la boîte de dialogue je monte aux références. Tiens, j'avais vu une commande qui arrivait là directement ...

    J'ai deux fois une référence nommée AjaxControlToolkit, de type BIN, avec comme version "mise à jour automatique". Ah ben oui, une déclarée dans le web.config et une dans la page ? Bon alors je retire la balise de déclaration dans la page. Je retourne dans la boîte de dialogue, cette fois je vois trois références AjaxControlToolkit, la troisième est de type GAC.

    Je mets en commentaire celle que j'ai mise dans la catégorie Assemblies du web.config. Un des deux messages disparaît, pendant la génération l'autre aussi, puis le deuxième revient à la fin, et un peu plus tard l'autre aussi.

    Je regarde dans la boîte de dialogue, cette fois je n'ai plus qu'une référence AjaxControlToolkit, type BIN, mise à jour automatique.

    Ah, on dirait qu'on en sait un peu plus. J'ai fait l'installation l'année dernière, il y avait des petits trucs pas très orthodoxes mais ça a fini par marcher. J'avais oublié que j'avais mis l'AjaxControlToolkit dans le GAC, contrairement à ce que conseille le fichier d'instructions. Peut-être à un autre moment ça peut avoir son intérêt, mais c'est sûr que si après j'oublie ...

    Nous commençons donc à cerner une question : si l'AjaxControlToolkit est présent dans le GAC, la façon de procéder est-elle différente ?

    Je serais bien inspiré d'essayer en l'enlevant, peut-être ?

    Je regarde ça.

     

    • Modifié Gloops samedi 12 mai 2012 15:16
    samedi 12 mai 2012 14:44
  • Oui tu peux voir ce que ça donne en l'enlevant du GAC et en mettant tout dans le répertoire Bin.

    En tout cas c'est étrange que tu aies une erreur avec le Calendar. Es-tu sûr d'avoir la dernière version de l'assembly ?

    Ce que tu peux faire pour en être sûr, tu supprimes toute référence au toolkit dans ton projet, puis tu récupères la toute dernière version ici : http://ajaxcontroltoolkit.codeplex.com/ Ensuite, tu peux suivre les étapes données en exemple lorsque tu arrives sur ce lien.

    En repartant de zéro peut-être que ça te permettra de résoudre le problème actuel.


    Cordialement,
    Mathieu

    Consultant SI - Technos Microsoft .NET / Dynamics / MSSQL + BI


    samedi 12 mai 2012 16:47
  • Finalement j'ai regardé le GAC, ce qui a pris du temps car c'est pile le moment qu'a choisi une mise à jour de pilote pour mettre le bazar dans l'explorateur. Dans Windows\Assembly, je n'ai pas de nom qui contienne Ajax ou Toolkit. C'est d'autant plus étrange d'avoir trouvé une référence de type GAC.

    Je crains quand même effectivement de devoir tout remettre à plat, ce qui ne m'arrange pas du tout car j'ai déjà pris pas mal de retard. Et c'est d'autant plus rageant sur une machine où le site de démonstration fonctionne très bien.

    A propos j'ai remarqué une chose, c'est que les instructions du coach (atelier 1 page 24) parlent de AspControlToolkit-NoSource.zip, alors qu'en fait le fichier s'appelle AjaxControlToolkit-NoSource.zip. Si on l'a sous les yeux on voit bien que c'est le même contenu, mais si on fait une recherche, en mélangeant un peu différents répertoires de téléchargements ...

    Bon alors quoi déjà ?

    • Vider l'onglet AjaxControlToolkit de la boîte à outils dans Visual Studio
    • Vider le répertoire "C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\Ajax Control Toolkit"
    • Réinstaller selon les instructions de l'atelier 2 Ajax.

    J'en oublie ?

    Je fais quelques essais avec Ajax, si ça marche je peux laisser ? Ou il faut vraiment que tout soit homogène ?



    • Modifié Gloops samedi 12 mai 2012 19:19
    samedi 12 mai 2012 19:13
  • Bonjour,

    Je vous conseille de procéder selon les étapes suivantes pour installer correctement la librairie de composants AjaxToolKit:

       1.  Dé-référencer la librairie AjaxToolKit depuis votre projet
       2.  Récupérez la dernière version de la librairie AjaxToolKit (.NET 3.5 ou 4 selon votre projet) depuis le site officiel
       3.  Ouvrez une page Web ASPX dans Visual Studio
       4.  Se Placer dans le volet "Boîte à outils"
       5.  Ajouter un onglet dans la boîte à outils (clique droit dans la boîte à outils>Ajouter un onglet) et le nommer (Composants AjaxToolkit par exemple)
       6.  Décompresser l'archive d'AjaxToolkit récupérée, dans un répertoire
       7.  Se Placer dans l'onglet créé dans la "Boîte à outils"
       8.  Ajouter les composants AjaxToolkit en faisant un clique droit>choisir les éléments... dans l'onglet. Attendre un peu l'apparition de la boîte de référencement des composant (un peu lent des fois)
       9.  Une nouvelle boîte de dialogue s'affiche. Dans le volet "Composants .NET Framework" de la boîte de dialogue qui s'affiche cliquer sur parcourir et choisir la DLL AjaxToolkit téléchargée (cf. image ci-dessous)
       10. Cliquer sur OK
       11. Les composants d'AjaxToolkit sont installés et prêts à être utilisés sans faire de code, de manière propre, rapide et efficace (Visual Studio référence automatiquement la librairie dans votre projet)
       12. Pour utiliser les composants, Effectuer du drag and drop depuis la boîte à outils dans une page web ASPX ou ecrire directement le code (le tagPrefix généré par VisualStudio par défaut est asp, celui-ci peut bien sûr être modifié)

    Voici la boîte de dialogue de référencement:



    Voici une capture de Visual Studio:

    Cordialement,


    My blog

    Whether you’re a construction worker, a forum moderator, or just someone that likes helping people. I think these guidelines can be helpful in keeping you helpful when being helpful.



    • Modifié Link.frEditor samedi 12 mai 2012 19:34 Ajout du lien vers le site d'AjaxToolKit
    • Proposé comme réponse DotNetMatt dimanche 13 mai 2012 12:54
    • Marqué comme réponse Gloops dimanche 13 mai 2012 12:56
    samedi 12 mai 2012 19:29
    Auteur de réponse
  • Bingo!

    La réinstallation de l'onglet AjaxControlToolkit s'est avérée décisive.

    L'année dernière, je l'ai installé à partir du répertoire de téléchargement, ce qui fonctionne bien tant que celui-ci est stable, et puis j'ai utilisé un gestionnaire de téléchargement avec une interface utilisateur que je ne trouve pas très lisible, alors il a fallu que je fasse un peu de ménage. C'est certainement pour anticiper ce type de situation qu'on conseille de déployer vers Program Files, là il n'y a pas de raison que ça bouge.

    Il est conseillé de créer un sous-répertoire bin, d'où sera créé l'onglet de la boîte à outils. Je n'y ai mis que les cultures dans lesquelles je traduis habituellement mon site, j'imagine que c'est ce qu'il faut faire, histoire d'avoir une expérience utilisateur relativement homogène en terme de langue ?

    Puisque le site de démonstration fonctionnait, je suppose qu'en retirant bien toutes les références et en en faisant manuellement une déclaration propre bien comme il faut ça devait fonctionner, mais de cette façon il y a manifestement plus d'éléments à contrôler, d'où l'échec de la tentative que j'en ai faite.

    Enfin maintenant que la boîte à outils est opérationnelle je devrais être capable de monter un site avec des éléments de l'AjaxControlToolkit dans un délai correct, après tout j'imagine que dans l'immédiat c'est ce qu'on attend de moi.

    Merci pour l'aide, ça m'a manifestement fait gagner un temps précieux.

    dimanche 13 mai 2012 12:43
  • Voyons voir si je peux en savoir un peu plus ... Je passe par Outils / Options de démarrage, et dans la boîte de dialogue je monte aux références. Tiens, j'avais vu une commande qui arrivait là directement ...

    Est-ce que ça évoque quelque chose à quelqu'un, ça ?

    dimanche 13 mai 2012 13:03
  • Voyons voir si je peux en savoir un peu plus ... Je passe par Outils / Options de démarrage, et dans la boîte de dialogue je monte aux références. Tiens, j'avais vu une commande qui arrivait là directement ...

    Est-ce que ça évoque quelque chose à quelqu'un, ça ?

    ça y est ça me revient :

    • clic droit sur le projet dans l'explorateur de solutions
    • Page de Propriétés

    On arrive sur les références.

    lundi 14 mai 2012 16:59