我有两个项目,一个是应用程序(exe),另一个是库(dll).我正在从应用程序动态加载库.我试图从DLL中访问exe的app.config.这是DLL的代码:
config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
object abc = config.Sections["MySection"];
如果我有一个从程序项目到库项目的引用,那么上面的代码工作正常.但是,如果我删除引用,我会得到一个System.IO.FileNotFoundException.
配置的HasFile属性为true,但似乎无法找到该部分或其他内容.所以我想也许它正在使用不同的aap.config,我试图手动将app.config路径指定为OpenExeConfiguration,但我仍然得到相同的错误.
那么如何从DLL访问程序的app.config,而无需从程序项目中引用该DLL?
最佳答案 解:
我不得不将我的程序集添加到解析处理程序:
ResolveEventHandler tempResolveEventHandler =
(sender, args) => { return Assembly.LoadFrom(Assembly.GetExecutingAssembly().Location); };
AppDomain.CurrentDomain.AssemblyResolve += tempResolveEventHandler;
//access the app.config here
AppDomain.CurrentDomain.AssemblyResolve -= tempResolveEventHandler;