2010-12-08 17 views
4

J'ai deux projets, l'un est une application (exe) et l'autre est une bibliothèque (dll). Je charge dynamiquement la bibliothèque depuis l'application. J'essaie d'accéder à app.config de l'exe depuis la DLL. Voici le code de la DLL:C# problèmes d'accès à app.config d'un autre projet

config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
object abc = config.Sections["MySection"]; 

Si j'ai une référence du projet de programme au projet de bibliothèque, le code ci-dessus fonctionne très bien. Mais si je supprime la référence, j'obtiens une exception System.IO.FileNotFoundException.

La propriété HasFile de config est true, mais il semble qu'elle ne trouve pas la section ou quelque chose. J'ai donc pensé qu'il utilisait peut-être un fichier aap.config différent, et j'ai essayé de spécifier manuellement le chemin app.config dans OpenExeConfiguration, mais j'ai toujours la même erreur.

Alors, comment puis-je accéder au fichier app.config du programme à partir d'une DLL, sans faire référence à cette DLL à partir du projet de programme?

Répondre

2

Solution:

FileNotFoundException in Visual Studio Setup and Deployment Project when trying to load custom config

je devais ajouter mon assemblée au gestionnaire de résolution:

ResolveEventHandler tempResolveEventHandler = 
(sender, args) => { return Assembly.LoadFrom(Assembly.GetExecutingAssembly().Location); }; 

AppDomain.CurrentDomain.AssemblyResolve += tempResolveEventHandler; 
//access the app.config here 
AppDomain.CurrentDomain.AssemblyResolve -= tempResolveEventHandler;