3 votes

Référencement du fichier DLL de la bibliothèque Microsoft Enterprise dans une DLL d'emballage

Je suis en train d'écrire une application utilisant le Bibliothèque Microsoft Enterprise . J'ai écrit une DLL pour ce fichier Enterprise Library DLL. Je veux utiliser mon wrapper dans une Formulaires Windows application. Le problème est que chaque fois que je veux utiliser mon wrapper, j'obtiens une erreur dans la compilation qui indique qu'une référence au fichier DLL de la bibliothèque d'entreprise est manquante.

Je peux simplement résoudre le problème en fournissant cette référence, mais je pense qu'il me manque quelque chose ici, car je viens d'envelopper ce fichier Enterprise Library DLL dans ma DLL. Pourquoi la référence n'est-elle pas héritée de mon projet wrapper vers le projet Windows Forms ?

D'après ce que j'ai compris, l'application Windows Forms recherche le répertoire bin, puis le fichier CAG et s'il ne trouve pas le fichier DLL voulu, il affiche une erreur.

Le fichier DLL de la bibliothèque Microsoft Enterprise est déjà signé et se trouve dans le GAC. Quel est donc le problème ici ? Comme je l'ai dit, j'ai l'impression que quelque chose m'échappe !

4voto

Jay Bazuzi Points 20462

Les références d'assemblage ne sont pas transitives.

Si vous référencez et appelez l'assemblage A, qui référence l'assemblage B, vous n'obtenez pas automatiquement une référence à l'assemblage B. Si votre interaction avec A nécessite des types de B, vous devrez également faire référence à B.

1voto

Dani Points 917

Vous devez spécifier la bibliothèque que vous utilisez (et seulement ensuite, elle la recherche dans le dossier local et le GAC).

Les références ne sont pas "héritées" et comme il s'agit d'une liaison dynamique (et non d'une partie de votre dll), elles seront ouvertes si nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X