2010-11-26 31 views
2

J'écris une DLL qui est chargée par une application tierce (le programme de test du framework FitNesse, la DLL est un testeur). La DLL possède son propre fichier App.config (par exemple MyDll.dll.config), et je peux dire à FitNesse de charger ce fichier App.config.Localiser correctement les assembleurs de gestionnaires de section App.config de la DLL

Mais voici le problème: Le fichier contient App.config gestionnaire de section de configuration personnalisée, comme ceci:

<configuration> 

    <configSections> 
    <sectionGroup name="myGroup"> 
     <section name="MySection" type="MyNamespace.MyHandler.MySection, MyNamespace.MyHandler"/> 
     ... 
    </sectionGroup> 
    </configSections> 
    ... 
</configuration> 

Chaque fois que le fichier App.config est lu, j'obtiendrai une exception en disant que le MyNamespace.MyHandler l'assemblage ne peut être trouvé, même si elle se trouve dans le même dossier que le fichier en cours de lecture MyDll.dll.config:

System.TypeInitializationException: le type initialiseur pour « MyNamespace.MyHandler.MySection » a émis une exception. ---> System.Configuration.ConfigurationErrorsException: Une erreur est survenue la création du gestionnaire de section de configuration pour myGroup/MySection: Impossible de charger le fichier ou d'assemblage « MyNamespace.MyHandler » ou une de ses dépendances. Le système ne peut pas trouver le fichier spécifié

Je peux voir que le système recherche ce fichier dans le même dossier dans lequel le fichier exécutable qui charge ma DLL se trouve. Cependant, je ne veux pas copier mes fichiers dans ce répertoire tiers ou vice versa.

Existe-t-il un moyen de spécifier où le système doit rechercher les DLL pour interpréter le fichier App.config? Une solution générale ou une solution spécifique à FitNesse fonctionnerait pour moi.

Merci beaucoup d'avance pour toute aide!

Répondre

1

Vous pouvez essayer d'utiliser la section d'exécution comme expliqué ici:

http://kbalertz.com/897297/consume-assemblies-located-folder-different-application-folder-Visual-Basic.aspx

+0

Merci! J'accepte cette réponse parce qu'elle semble résoudre le problème. Cependant, nous avons rencontré d'autres problèmes similaires, donc, hélas, nous devons aller avec une solution plus laide, que j'ajouterai comme deuxième réponse. Merci beaucoup quand même! – Jan

+0

Le lien de kbalertz est mort, quelqu'un a-t-il un qui fonctionne? J'ai le même problème, incapable de charger les DLL qui sont dans le même emplacement que le fichier .config. – MiloDC

0

Voici une autre solution, nous nous sommes retrouvés. Bien que la solution présentée par Gregor S. semble en effet nous permettre de lire le App.config, nous rencontrons d'autres problèmes concernant le répertoire de travail plus tard. Donc, ce que nous faisons maintenant, est d'ajouter l'application FitNesse Runner en tant que lien vers notre projet, afin qu'il soit récupéré de son emplacement d'origine et copié dans le dossier de notre application de test avant qu'il ne soit exécuté.

Ce n'est pas bien, mais ça marche.

+0

Utilisez-vous toujours la même approche ou avez-vous découvert une meilleure solution en attendant? – Thaoden