.NET 2.0 : enregistrer les dlls [Résolu]

Signaler
Messages postés
115
Date d'inscription
samedi 15 février 2003
Statut
Membre
Dernière intervention
18 mai 2008
-
Messages postés
115
Date d'inscription
samedi 15 février 2003
Statut
Membre
Dernière intervention
18 mai 2008
-
Bonjour,

Savez vous comment on peut enregistrer les fichiers dll que l'on crèe (qd on crèe des bibliothèques de classes par ex) ?

Afin que plusieurs applications exe trouvent les dll dans le dossier système par ex et qu'on n'aie pas à recopier à chaque fois les dll dans le dossier de l'application pour chacune d'entre elles.

J'ai essayé regsvr32 et gacutil.exe /i composant.dll mais ca n'a pas l'air d'aller

10 réponses

Messages postés
115
Date d'inscription
samedi 15 février 2003
Statut
Membre
Dernière intervention
18 mai 2008

Je passais par là et je retombe sur une vieille de mes questions.


Pour ceux qui passeraient donc par ici aussi, c'est bien avec GACUTIL.EXE /i mydll.dll que tout se fait.


Chaque version de la dll est créée dans le cache (C:\windows\assembly\gac_msil\)

Et là plus de soucis. Tous les exe fonctionneront..



TIGER
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
le but de .Net, sortir du "Dll Hell" et ne plus avoir a se casser les pieds (ah, la politesse) avec l'enregistrement des Dll

t'as pas a enregistrer les dll... (je crois que le lien se fait dans les fichiers .manifest)

faudrais l'avis d'un DotNettien pour confirmer

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
30
Salut,

Oui, tu ajoute la référence vers ta dll à ton projet qui en as besoins et tout est bon.







__________
Kenji

(


Nouveau forum VBA/Office
Messages postés
115
Date d'inscription
samedi 15 février 2003
Statut
Membre
Dernière intervention
18 mai 2008

Bonjour,

Merci de votre réponse mais je me suis peut-être mal exprimé.
Ce n'est pas dans le projet même que j'ai le soucis, c'est dans le déploiement des exe sur les postes clients.

Effectivement grâce à .NET et le framework, suffit de copier le dossier exe et ses dll et ca marche sur toutes les machines.
Mais si on installe plusieurs applications qui utilisent les mêmes dll, jusqu'à présent je dois laisser les dll dans le même dossier de l'application.

Donc si j'ai 30 prgs. 30 dll à copier .. et si j'améliore ma dll faut que je repense à recopier la dernière dll dans ts les dossiers.

En vb6, un petit regsvr32 suffisait à faire comprendre à l'exe que la dll se trouvait tjs dans le même dossier (svt system32 pour faire simple)

Mais ici si je retire les dll, le prg exe me dit qu'il les trouve pas ..
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
30
Salut,

Met ta dll dans le dossier System et quand tu l'importe, tu met CopyLocal à False.







__________
Kenji

(


Nouveau forum VBA/Office
Messages postés
115
Date d'inscription
samedi 15 février 2003
Statut
Membre
Dernière intervention
18 mai 2008

Charles,

Tu as sûr d'avoir tester cela ? car dès que tu mets copie locale à false, j'ai filenotfoundexception or assembly error même à la compilation !

J'ai par contre continuer à regarder sur le net et je suis tombé sur le fait qu'il faudrait peut-être signé les assemblies avant de les enregistrés avec GAC. L'ennui c'est que GAC va les importer et si je fais une mofification plus tard de la dll je ne vois pas cmt GAC va aller rechercher la nouvelle version de la dll ... et encore moins comment référencer les dll enregistrées dans le GAC dans le projet ...
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
30
Si tu importe celle que tu as mise dans le dossier System, en principe, c'est bon.
J'ai pas vb2005 pour le moment, je fait des testes ce soir.







__________
Kenji

(


Nouveau forum VBA/Office
Messages postés
115
Date d'inscription
samedi 15 février 2003
Statut
Membre
Dernière intervention
18 mai 2008

Je viens de rentrer à la maison. Sur mon pc perso, pareil .. Pour être sûr je te dis ce que je fais .

Je copie ma madll.dll dans C:\Windows\system32\
Je crère un nouveau projet. Je lui ajoute comme référence C:\Windows\system32\madll.dll
Je mets la propriété Copie Local à False
Je mets un simple dim test as new mydll.mydll dans le form_load par exJe génère et là : "impossible de charger le fichier ou l'assembly 'mydll.dll', version xxx, culture neutral, publickkeytoken=null ou une des ses dépendances, le fichier spécifié est introuvable"
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
30
Je viens de tester et en effet, ca marche pô.
Peut-être la charger en dynamique.







__________
Kenji

(


Nouveau forum VBA/Office
Messages postés
115
Date d'inscription
samedi 15 février 2003
Statut
Membre
Dernière intervention
18 mai 2008

Bonjour,

Le seul truc qui marche jusqu'à présent c'est en effet d'utiliser GAC /i mydll.dll sur chaque poste après avoir signé chaque dll.

Mais c'est un peu plus lourd pour la suite : GAC met en cache une copie de la dll. Comment aller facilement mettre à jour une dll dans GAC ca je ne vois pas. J'ai bien lu que le GAC faisait en fait une copie pour chaque version. Il y a tjs moyen de vider une version du caache (GAC /u) mais bon c'est loin d'être pratique. Je regrette finalement le bon vieux VB6 ou un regsvr32 suffisait et qu'on avait plus qu'à remplacer le fichier au bon endroit (effectivement par habitude dans le dossier système)...

Autre alternative Click One.. mais là aussi si faut installer un serveur web pour faire une MAJ ou même faire un prg d'installation .. on perd toute la force de .net là !!

Il y a qd même bien moyen de faire comprendre à l'exe qu'il doit fouiller le dossier système bon sang ...

Que veux-tu dire par "en dynamique" ? tu peux m'apporter plus de précision que je teste .. merci