【发布时间】:2009-04-13 21:54:05
【问题描述】:
我们的应用程序在运行时从应用程序的根目录加载我们的自定义 DLL(这些 DLL 正在实现某些接口)并通过反射执行方法。
如果自定义 DLL 必须从配置文件中读取一些值,那么我们必须将这些配置设置复制到主应用程序的 app.config 文件中。
有什么方法可以让每个自定义 DLL 拥有自己的名为 .config 的配置文件,并从该文件本身读取其配置设置。
【问题讨论】:
标签: app-config
我们的应用程序在运行时从应用程序的根目录加载我们的自定义 DLL(这些 DLL 正在实现某些接口)并通过反射执行方法。
如果自定义 DLL 必须从配置文件中读取一些值,那么我们必须将这些配置设置复制到主应用程序的 app.config 文件中。
有什么方法可以让每个自定义 DLL 拥有自己的名为 .config 的配置文件,并从该文件本身读取其配置设置。
【问题讨论】:
标签: app-config
如果您使用 .NET 2.0 或更高版本,您可以手动告诉配置系统从您想要的任何配置文件加载设置。
ExeConfigurationFileMap exeMap = new ExeConfigurationFileMap();
exeMap.ExeConfigFilename = "C:\Application\Default.config";
Configuration exeConfig = ConfigurationManager.OpenMappedExeConfiguration(exeMap, ConfigurationUserLevel.None);
现在您有了自定义的“配置”对象,您可以在上面开派对了! :-) 通过调用 exeConfig.GetSection() 或任何你喜欢的方式加载整个部分。
还可以查看 CodeProject 上关于 .NET 2.0 配置系统的这个优秀的三部分系列 - 强烈推荐!
马克
【讨论】:
将您的 DLL 加载到新的 AppDomain 并设置 AppDomainSetup.ConfigurationFile。这将允许您为每个自定义 DLL 创建单独的配置文件。
【讨论】:
我确信在框架中有一种方法可以做到这一点,只是想不起来。你要找的是 Per-Assembly 配置文件,我记得看过一篇关于这个的文章Per Assembly Configuration Files
【讨论】: