[Résolu] Attacher une librairie à un .exe

Attacher une librairie à un .exe [Résolu] - C#/.NET managed - Programmation

Marsh Posté le 25-06-2007 à 17:48:29    

Bonjour à tous,
 
J'ai un soucis avec le fichier .exe créé par visual studio (pour la suite : VS).
D'habitude, lorsque je crée un projet avec VS, une fois l'application terminée, je copie simplement le fichier .exe de VS et je l'envoie sur mon bureau par exemple.
Mais aujourd'hui cela ne fonctionne pas, et cela semble venir du fait que j'ai attaché une librairie spéciale à mon application (la librairie itextsharp.dll).
Lorsque je lance mon application depuis VS, tout va bien, mais lorsque je lance l'appli depuis le .exe et donc en dehors de VS, j'ai l'erreur suivante :

Code :
  1. impossible de charger le fichier ou l'assembly 'itextsharp, version=1.0.4.0, culture=neutral, publickeyToken=null' ou une de ses dépendances. Le fichier est introuvable.


Quelqu'un serait-il au courant de où peut venir le problème?
 
Merci d'avance  :)


Message édité par jomree le 26-06-2007 à 08:47:28
Reply

Marsh Posté le 25-06-2007 à 17:48:29   

Reply

Marsh Posté le 25-06-2007 à 18:10:08    

t'as essayé de mettre la dll dans le même dossier que l'exécutable ?

Reply

Marsh Posté le 25-06-2007 à 18:20:17    

Merci pour ta réponse vadder!
Effectivement, si je copie mes dll au même endroit que mon .exe, cela fonctionne.
Mais je ne pense pas que cela soit la solution, explication :
Je décide de mettre mon .exe sur mon bureau, cela n'est pas du tout pratique de devoir mettre aussi sur le bureau les dll
J'espère que tu comprends ce que je veux dire.
Ne penses-tu pas qu'il existe une solution pour attacher ces dll à l'application? (de la même façon que l'on peut attacher une icône à une application sans avoir à mettre obligatoirement l'icône dans le même répertoire que l'application)
 
En tous cas, merci pour ta réponse

Reply

Marsh Posté le 25-06-2007 à 20:31:15    

jomree a écrit :

Merci pour ta réponse vadder!
Effectivement, si je copie mes dll au même endroit que mon .exe, cela fonctionne.
Mais je ne pense pas que cela soit la solution, explication :
Je décide de mettre mon .exe sur mon bureau, cela n'est pas du tout pratique de devoir mettre aussi sur le bureau les dll
J'espère que tu comprends ce que je veux dire.
Ne penses-tu pas qu'il existe une solution pour attacher ces dll à l'application? (de la même façon que l'on peut attacher une icône à une application sans avoir à mettre obligatoirement l'icône dans le même répertoire que l'application)
 
En tous cas, merci pour ta réponse


Sur le bureau, on met un raccourci généralement...

Reply

Marsh Posté le 26-06-2007 à 08:44:11    

MagicBuzz a écrit :

Sur le bureau, on met un raccourci généralement...


wep, finalement, c'est ce que je vais faire...

Reply

Marsh Posté le 07-11-2007 à 04:06:08    

Petite réponse lointaine pcq je passais par la...
juste pour dire que tu aurais pu aussi mettre les .dll dans windows\system32 , et la peu importe l'emplacement d'où tu execute ton fichier car lorsque les dll sont dans system32 ton prog les détecte automatiquement ;-)

Reply

Marsh Posté le 07-11-2007 à 05:01:41    

ou bien faire un regsvr32 madll.dll (cela dépend du type de la dll bien sur)

Reply

Marsh Posté le 07-11-2007 à 10:33:17    

bibije a écrit :

Petite réponse lointaine pcq je passais par la...
juste pour dire que tu aurais pu aussi mettre les .dll dans windows\system32 , et la peu importe l'emplacement d'où tu execute ton fichier car lorsque les dll sont dans system32 ton prog les détecte automatiquement ;-)


 

gatsu35 a écrit :

ou bien faire un regsvr32 madll.dll (cela dépend du type de la dll bien sur)


 
En catégorie C#/.NET messieurs !
 
 
dans son cas, l'idéal quand on fait les choses bien, c'est de mettre les Assemblies dans le GAC. Et en effet, on met un raccourci vers l'exe sur le bureau pas l'Exe :)
 


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
Reply

Marsh Posté le 07-11-2007 à 21:01:30    

Euh... merci pour ces compléments d'informations ^_^

ixemul a écrit :

dans son cas, l'idéal quand on fait les choses bien, c'est de mettre les Assemblies dans le GAC

Euh...justement, pour faire ça proprement...  
Comment procède-t-on pour mettre une assembly dans le GAC...?
J'ai pu lire qu'il fallait exécuter la commande : "gacutil -i leNomDeMaDll.dll"
C'est tout...? en effectuant cette commande, il sait tout de suite où se trouve leNomDeMaDll.dll dans mon pc?
Je veux dire par là, il ne faut pas indiquer l'endroit où se trouve leNomDeMaDll.dll pour que celle-ci soit copiée dans le GAC?
Merci pour les infos ;-)


Message édité par jomree le 07-11-2007 à 21:01:45
Reply

Marsh Posté le 08-11-2007 à 11:20:22    

Alors, dans l'ordre :
 
une appli va chercher :
- Dans le repertoire de l'application
- Dans le Global Assembly Cache(GAC)
- Dans c:\Windows (enfin, le repertoire d'install de windows)
- Dans c:\Windows\System32
 
les 2 derniers étant à proscrire en .NET [:dawao]
 
Pour mettre une assembly dans le GAC, il faut impérativement que celle-ci posseède un Nom "Fort". Sous ce terme barbare se cahce simplement une action à effectuer qui est le signe de l'assembly. ceci se fait à l'aide de la commande "SN" dans la console Visual studio. il te faut donc générer à l'aide de cette commande un fichier snkey.snk que tu utilisera ensuite pour "Signer" ton assembly. Ainsi signée, tu pourra l'ajouter à l'aide de la commande "GacUtil".
 
Cette opération est nécessaire car elle permet d'éviter les conflits de version entre assembly, à savoir, tu pourra retrouver plusieurs fois la même assembly dans le GAC avec des N° de version différents. Sachant que lorsque tu référence une assembly signée dans un projet, seule la version utilisée pour le référencement ne pourrat être utilisée.
 
Enfin, le sujet est assez vaste, je ne saurais trop te conseiller de rechercher sur google afin de comprendre mieux ces mécanismes ;)


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed