none
Problème de ? (DLL, Référence d'assembly, gacutil ???) RRS feed

  • Question

  • J’ai crée une DLL contenant un Windows Form à partir du modèle de projet « Bibliothèque de Class ».

    Après compilation avec signature de l’Assembly j’obtiens :

    Dans le dossier D:\Visual Studio 2005 Projects\MyProject\bin\Release le fichier MyDLL.dll

    Et dans le dossier D:\Visual Studio 2005 Projects\ MyProject\ le fichier MyDLLKeys.snk

    J’ai ensuite recopié le fichier MyDLL.dll dans C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\

    Dans l’applicatif devant utiliser la dll, j’ai ajouté une référence en utilisant le menu de Visual Studio

    « Ajouter une référence » et en sélectionnant  MyDLL dans l’onglet .NET.

    J’ai ajouté dans l’applicatif :

    -         un using MyDLL ;

    -         l’utilisation de la DLL.

    Et compiler sans pb.

    Jusque là rien de surprenant

    A l’éxécution j’ai un message d’exception « File.IO.NotFound » ( ?) disant que le fichier MyDLL.dll est introuvable.

    J’ai rajouté dans le même répertoire le Fichier MyDLLKeys.snk è même punition.

    J’ai ensuite utilisé gacutil en éxécutant la commande :

    Gacutil /i MyDLL.dll

    Compilation toujours sans pb. 

    A l’éxécution le windows Form de la DLL s’affiche et comme j’ai pris la précaution  d’afficher dans le Form :

    this.LabelVersion.Text = "Version : " + Assembly.GetExecutingAssembly().GetName().

    Version.ToString();

    Je peux verifier que c’est bien la dernière compilation de ma dll qui est utilisée.

    Mais vous allez dire où est ton problème …… j’y viens.

     

    Si je supprime les deux fichiers MyDLL.dll et MyDLLKeys.snk de C:\Windows ….\v2.0.50727\,

    Que je lance la commande gacutil/u MyDLL.dll et même après IPL, lancement de visual Studio et Compil de mon

    application elle éxécute toujours ma DLL.

    Dans la fenêtre de sortie l’ordre de compil mentionne :

    ------ Début de la régénération globale : Projet : SynchroAppBH, Configuration : Debug Any CPU ------

    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Csc.exe /noconfig /nowarn:1701,1702 /errorreportStick out tonguerompt /warn:4 /defineBig SmileEBUG;TRACE

    /reference:C:\WINDOWS\assembly\GAC_MSIL\DebugBH\1.0.3290.21864__8c7431ff2860683b\DebugBH.dll

    /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Deployment.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /debug+ /debug:full /optimize- /outSurprisebj\Debug\SynchroAppBH.exe /resourceSurprisebj\Debug\SynchroAppBH.About.resources

    /resource:"obj\Debug\SynchroAppBH.FichierDétails.resources"

    /resourceSurprisebj\Debug\SynchroAppBH.Form1.resources

    /resourceSurprisebj\Debug\SynchroAppBH.Properties.Resources.resources

    /resourceSurprisebj\Debug\SynchroAppBH.SynchroAppBH.resources /target:winexe About.cs About.Designer.cs DirectoryTreeView.cs "FichierDétails.cs" "FichierDétails.Designer.cs" FileListView.cs Form1.cs Form1.Designer.cs Program.cs Properties\AssemblyInfo.cs Properties\Resources.Designer.cs Properties\Settings.Designer.cs SynchroAppBH.Designer.cs

     

    Compilation terminée -- 0 erreurs, 0 avertissements

    SynchroAppBH -> D:\Visual Studio 2005 Projects\SynchroAppBH\bin\Debug\SynchroAppBH.exe

    ========== Régénération globale : 1 a réussi, 0 a échoué, 0 a été ignoré ==========

     (DebugBH est ma Dll)

     

    Et là franchement, j’ai besoin d’explication :

    D’où sort ce MyDLL.dll de C:\WINDOWS\assembly\GAC_MSIL\DebugBH\1.0.3290.21864__8c7431ff2860683b\DebugBH.dll.

     

    Je n’ai bien sur pas trouvé de dossier (même caché) GAC_MSIL dans C:\Windows\assembly

     

    Si quelqu’un a une idée.

    Merci d'avance

     

    samedi 3 janvier 2009 15:45

Réponses

  • je viens de trouver la réponse à ma question, en regardant de plus prêt sur MSDN l'utilisation de gacutil.

    Je présente toutes mes excuses à ceux qui ont consultés ma question et qui ont cherchés une réponse.

     

    Le problème vient tout simplement d'une commande de gacutil érronée.

    je me suis servi d'un livre de .... Microsoft (Manuel de référence Microsoft Visual C#.NET de Mickey Williams adapté de l'anglais par Guillaume Heilles).

     

    Dans cet ouvrage il est écrit que pour ajouter un Assembly au GAC il suffit d'utiliser la commande :

    gacutil /i myCtrl.dll

    et que pour supprimer un Assembly du GAC il suffit d'utiliser la commande :

    gacutil /u myCtrl.dll 

    De plus l'auteur indique que cette commande supprime toutes les versions de myCtrl.dll.

     

    En fait la commande gacutil /u myCtrl.dll est erronné car le suffixe .dll est de trop et donc je n'ai jamais supprimé de Dll.

     

    Encore toute mes excuses pour ceux qui auraient planchés sur la question.

    "Errare humanum est, perseverare diabolicum"

     

    Cordialement

    dimanche 4 janvier 2009 19:33