[Résolu] Casse tête de .dll

Casse tête de .dll [Résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 12-09-2006 à 10:29:39    

Bonjour à tous ceux qui voudrons m'écouter  :hello:  
 
J'ai besoin de créer une .dll COM objet en VB.NET.
J'ai tout d'abord commencé par créer une librairie "standard" .NET
J'ai réussi à créer un COM objet par la suite après quelques lignes de commande fastidieuses.
Mon problème est le suivant:
après la création de cette .dll de tests je me suis atelé à mes développements proprement dit et là ECHEC:
j'ai besoin d'importer un COM objet provenant d'une autre appli. Le problème est que cette .dll n'a pas de nom fort... (ou Strong Name: madll.snk)
En effet, je fait référence à celle-ci dans la .dll que je créer. Et lorsque j'exécute un petit .vbs pour tester cette .dll HORREUR => le système n'arrive pas à localiser la .dll dont je fais référence...
Quelqu'un aurait-il une idée merveilleuse pour me sortir de cette $%!@ ?
Merci d'avance  :bounce:


Message édité par les gens roots le 12-09-2006 à 15:02:13
Reply

Marsh Posté le 12-09-2006 à 10:29:39   

Reply

Marsh Posté le 12-09-2006 à 10:40:57    

Normalement, tu dois la signer avec un nom fort, puis la placer dans le GAC


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 12-09-2006 à 11:09:52    

C'est bien ce que je dis ^^. Lorsque je signe ma .dll avec un nom fort il m'envoie chier car l'objet COM que j'ajoute en référence à ma .dll n'a pas elle-même de nom fort T.T

Reply

Marsh Posté le 12-09-2006 à 11:18:21    

ben créé un nom fort pour ta dll :spamafote:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 12-09-2006 à 11:33:46    

Je ne peux pas elle n'est pas a moi -_-.

Reply

Marsh Posté le 12-09-2006 à 15:02:33    

C'est bon vous creusez pas la tête j'ai encore trouvé tout seul ;p

Reply

Marsh Posté le 16-10-2006 à 10:40:44    

Et tu as fais comment ??
j'ai le même probleme que toi
merci :)

Reply

Marsh Posté le 16-10-2006 à 14:14:13    

Alors tu fais un "New Project" dans VisualStudio, sélectionne l'onglet "Class Library". Ensuite tu met ton code comme tu veux,  comme on l'a dit au dessus tu signe ta .dll dans les propriétés du projet. Tu build et tu place ta .dll à un endroit où elle bougera pas.  
Ensuite tu exécute un GAC (C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin) dans une invite de commande =>
  C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe -i C:\Program Files\MaDLL.dll
,ce qui va installer ta .dll dans le cache
 
Enfin tu relance un cmd et tu fais un Regasm de ta .dll (C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm.exe) =>
  C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm.exe  
C:\Program Files\MaDLL.dll
Pour register l'assembly créée dans le reg.
Et voilà t'as ta .dll enregistrée.
C'était pas compliqué pourtant xD
 
 
 
 

Reply

Marsh Posté le 02-04-2007 à 17:05:23    


Je rebondis sur le sujet  :bounce:  
Une fois la dll créée, comment tu fais pour la faire évoluer ?
Parce que moi j'en ai bien fait une, mais elle est fixe, après quand je modifie le code, et que je compile, ca la prend pas en compte. Je dois faire plein de bidouilles dont redémarrer la bécane  :(  
Puis finalement la réenregistrer pour tester.
 
Y a pas plus simple pour désinstaller/reinstaller l'assembly quand on est en cours de dév ?

Reply

Marsh Posté le 02-04-2007 à 19:01:44    

Hmm pas à ma connaissance... Désolé mais je suis pas assez compétent dans le domaine pour te répondre ^^. Ce que je fesais c'est à chaque build:    regasm -u|gacutil -u / build / regasm|gacutil -i
Me rapelle plus si je devais reboot ma machine mais il me semble pas.


---------------
Les neurones c'est neurologique.
Reply

Marsh Posté le 02-04-2007 à 19:01:44   

Reply

Marsh Posté le 03-04-2007 à 09:40:12    

les gens roots a écrit :

Hmm pas à ma connaissance... Désolé mais je suis pas assez compétent dans le domaine pour te répondre ^^. Ce que je fesais c'est à chaque build:    regasm -u|gacutil -u / build / regasm|gacutil -i
Me rapelle plus si je devais reboot ma machine mais il me semble pas.


 
En fait il semble qu'il y ait quelques problèmes dans mon registre, j'obtiens des exceptions quand j'essaie de faire les "-u".
Pour le gacutil -u, il me dit qu'il ne peut pas accéder au fichier car il est utilisé par un autre processus.
Pour le regasm -u, il me sort ceci :
 

Code :
  1. C:\Documents and Settings\e288508\Desktop>regasm Batch1.dll
  2. Microsoft (R) .NET Framework Assembly Registration Utility 1.1.4322.573
  3. Copyright (C) Microsoft Corporation 1998-2002.  Tous droits réservés.
  4. Inscription des types réussie
  5. C:\Documents and Settings\e288508\Desktop>regasm -u Batch1.dll
  6. Microsoft (R) .NET Framework Assembly Registration Utility 1.1.4322.573
  7. Copyright (C) Microsoft Corporation 1998-2002.  Tous droits réservés.
  8. System.ArgumentException: Impossible de supprimer une sous-clé car elle n'existe
  9. pas.
  10.    at Microsoft.Win32.RegistryKey.DeleteSubKey(String subkey, Boolean throwOnMis
  11. singSubKey)
  12.    at Microsoft.Win32.RegistryKey.DeleteSubKey(String subkey)
  13.    at ShellExt.BatchResultContextMenu.UnregisterServer(String str1) in c:\docume
  14. nts and settings\e288508\desktop\source\batchresults.cs:line 263
  15. Suppression de l'inscription des types réussie

 :pt1cable:


Message édité par Chandy le 03-04-2007 à 09:52:15
Reply

Marsh Posté le 05-04-2007 à 08:35:46    

Soit xD. La seule différence que je vois avec ton environnement c'est que moi je travaille en .NET 2.0
Sinon j'ai jamais eu d'exception suite à ces opérations t_t. Désolé de pas pouvoir t'en dire plus... Tu trouvera p-e ton bonheur sur MSDN... Bon courage :bounce:


---------------
Les neurones c'est neurologique.
Reply

Sujets relatifs:

Leave a Replay

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