Chargement d'une assembly

onionichan Messages postés 5 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 31 août 2007 - 29 août 2007 à 18:50
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 - 31 août 2007 à 11:34
Bonjour à tous,
J'ai un petit souci technique avec un composant COM C# qui est utilisé dans Excel;
1. J'ai enregistré mon assembly COM qui se trouve dans un répertoire D:/App/ avec d'autres assemblies qu'il utilise (Une assembly contenant un objet et une assembly contenant son interface)
on les appelera
COM.dll
OBJ.dll
IOBJ.dll
2. Je lance la feuille excel, j'ai le com qui commence l'initialization, mais quand je veux instancier ObjectDll qui hérite de IObjectDll,

Le problème est le suivant :
L'assembly OBJ.dll est chargée mais à partir du Working directory d'excel,  C:/ProgFiles.../Office10/
L'assembly OBJ.dll pour instancier l'object ObjectDll va ensuite chercher IOBJ.dll dans C:/ProgFiles.../Office10/ au lieu de le chercher dans D:/App/

Evidemment si je mets L'assembly d'interface dans C:/prog files/Excel ou bien dans le GAC ça fonctionne, mais sachant que cette application doit être utilisée par une centaine d'utilisateurs, je ne me sent pas de pusher les fichiers sur chaque station en ayant potentiellement des risques de lock d'assembly sur 10% des postes...

Si vous avez des idées...Je vous remercie d'avance.

   at System.Reflection.CustomAttribute.CreateCAObject(Int32& propNum, Assembly& assembly)
   at System.Reflection.CustomAttribute.GetObject()
   at System.Reflection.CustomAttribute.CheckConsistencyAndCreateArray(CustomAttribute caItem, Type caType)
   at System.Reflection.CustomAttribute.GetCustomAttributes(MemberInfo member, Type caType, Boolean inherit)
   at System.Reflection.CustomAttribute.GetCustomAttributes(Type type, Type caType, Boolean inherit)
   at System.RuntimeType.GetCustomAttributes(Type attributeType, Boolean inherit)
= Pre-bind state information ===
LOG: DisplayName = Application.Module.Interface, Version=1.0.2797.31108, Culture=neutral
 (Partial)
LOG: Appbase = C:\Program Files\Microsoft Office\Office10\
LOG: Initial PrivatePath = NULL
Calling assembly : (Unknown).
=

LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Post-policy reference: Application.Module.Interface, Version=1.0.2797.31108, Culture=neutral
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Office/Office10/Application.Module.Interface.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Office/Office10/Application.Module.Interface/Application.Module.Interface.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Office/Office10/Application.Module.Interface.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Office/Office10/Application.Module.Interface/Application.Module.Interface.EXE.

9 réponses

onionichan Messages postés 5 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 31 août 2007
30 août 2007 à 13:54
Petit détail supplémentaire, je n'ai pas de App.config sachant que ce n'est pas un exe
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
30 août 2007 à 14:39
Ca ne résoudra surement pas ton problème, mais pas besoin d'avoir un exe pour avoir un app.config...

Pour ma part, je mettrais les dll dans le GAC, après tout il est fait pour ça (et a priori tu ne risque rien a faire ça ?). Par contre si je ne dis pas de bêtises, ça oblige les utilisateurs à "installer" ton ocx, au lieu de simplement le copier - et ça ne répond peut être pas à ton besoin.

Sinon il n'y a il me semble une directive permettant de spécifier où charger les références si elles ne sont pas dans le répertoire courant... Si quelqu'un qui la connait passe par là...

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
30 août 2007 à 16:15
Oui, avec l'élément , voire la réponse de Mx ici

<hr />
-Blog-
0
onionichan Messages postés 5 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 31 août 2007
30 août 2007 à 16:56
hmm... dans ce cas comment créer un App.Config pour une dll COM?

Merci d'avance!
0

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

Posez votre question
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
30 août 2007 à 17:05
"hmm... dans ce cas comment créer un App.Config pour une dll COM?"

-> bouton droit sur le projet, "ajouter", "nouvel élément", "fichier de configuration"...
<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
0
onionichan Messages postés 5 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 31 août 2007
30 août 2007 à 18:25
c'aurait été trop facile...non ca ne fonctionne pas , on peut ajouter un fichier dans le projet mais il ne sera pas reconnu comme fichier de configuration au sens .Net du terme (initialisant la classe System.Configuration.ConfigurationSettings.AppSettings); lors du build le fichier app.config n'est pas transformé et transféré dans le répertoire d'output comme pour un exe. Du style ApplicationCOM.dll.config
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
31 août 2007 à 08:04
Alors si c'est pour cela que tu as besoin d'un app.config :

bouton droit sur le projet, "ajouter", "nouvel élement", "fichier de paramètres"

Ensuite tu édites son fichier de paramètre ".settings" - qui se chargera de gérérer ton app.config (qui reprendre le nom de ton output.config à la compile)

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
0
onionichan Messages postés 5 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 31 août 2007
31 août 2007 à 11:23
en .Net 1.1 ca existe?
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
31 août 2007 à 11:34
Je serai tenté de dire oui, mais n'ayant pas la possibilité de vérifier je laisse quelqu'un d'autre confirmer/infirmer...

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
0
Rejoignez-nous