我有两个项目,一个是应用程序(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?
答案 0 :(得分:2)
解决方案:
我必须将我的程序集添加到解析处理程序:
ResolveEventHandler tempResolveEventHandler =
(sender, args) => { return Assembly.LoadFrom(Assembly.GetExecutingAssembly().Location); };
AppDomain.CurrentDomain.AssemblyResolve += tempResolveEventHandler;
//access the app.config here
AppDomain.CurrentDomain.AssemblyResolve -= tempResolveEventHandler;