c# – 动态加载程序集的应用程序配置
发布时间:2020-12-15 06:20:24 所属栏目:百科 来源:网络整理
导读:我正在尝试将模块加载到我的应用程序中,但是我想为每个应用程序指定单独的app.config文件. 说我有以下app.config设置为主应用程序: appSettings add key="House" value="Stark"/ add key="Motto" value="Winter is coming."//appSettings 另一个用于使用Ass
我正在尝试将模块加载到我的应用程序中,但是我想为每个应用程序指定单独的app.config文件.
说我有以下app.config设置为主应用程序: <appSettings> <add key="House" value="Stark"/> <add key="Motto" value="Winter is coming."/> </appSettings> 另一个用于使用Assembly.LoadFrom加载的库: <appSettings> <add key="House" value="Lannister"/> <add key="Motto" value="Hear me roar!"/> </appSettings> 两个库都有一个类实现相同的接口,具有以下方法: public string Name { get { return ConfigurationManager.AppSettings["House"]; } } 并且肯定有足够的调用来自主类和加载的汇编类输出Stark. 有没有办法使主应用程序使用自己的app.config和每个加载的程序集使用他们的?配置文件的名称在输出中是不同的,所以应该可以我想. 解决方法
好的,这是我最终的简单解决方案:
在实用程序库中创建跟随函数: public static Configuration LoadConfig() { Assembly currentAssembly = Assembly.GetCallingAssembly(); return ConfigurationManager.OpenExeConfiguration(currentAssembly.Location); } 在动态加载的库中使用它,如下所示: private static readonly Configuration Config = ConfigHelpers.LoadConfig(); 无论如何加载它,它使用正确的配置文件. 编辑: public static Configuration LoadConfig() { Assembly currentAssembly = Assembly.GetCallingAssembly(); string configPath = new Uri(currentAssembly.CodeBase).LocalPath; return ConfigurationManager.OpenExeConfiguration(configPath); } 要在构建后复制文件,您可能需要添加以下行到asp应用程序的后期构建事件(从库中拉取配置): copy "$(SolutionDir)<YourLibProjectName>$(OutDir)$(Configuration)&;YourLibProjectName>.dll.config" "$(ProjectDir)$(OutDir)" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读