.NET 2.0 : enregistrer les dlls

Résolu
TigerFab Messages postés 115 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 18 mai 2008 - 9 août 2007 à 14:14
TigerFab Messages postés 115 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 18 mai 2008 - 24 avril 2008 à 13:46
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

TigerFab Messages postés 115 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 18 mai 2008
24 avril 2008 à 13:46
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
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
9 août 2007 à 14:19
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
0
Utilisateur anonyme
9 août 2007 à 14:28
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
0
TigerFab Messages postés 115 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 18 mai 2008
9 août 2007 à 16:04
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 ..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
9 août 2007 à 17:04
Salut,

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







__________
Kenji

(


Nouveau forum VBA/Office
0
TigerFab Messages postés 115 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 18 mai 2008
9 août 2007 à 18:22
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 ...
0
Utilisateur anonyme
9 août 2007 à 19:10
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
0
TigerFab Messages postés 115 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 18 mai 2008
9 août 2007 à 19:41
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"
0
Utilisateur anonyme
10 août 2007 à 14:25
Je viens de tester et en effet, ca marche pô.
Peut-être la charger en dynamique.







__________
Kenji

(


Nouveau forum VBA/Office
0
TigerFab Messages postés 115 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 18 mai 2008
11 août 2007 à 18:55
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
0
Rejoignez-nous