c# – 动态加载程序集的应用程序配置

c# – 动态加载程序集的应用程序配置,第1张

概述我正在尝试将模块加载到我的应用程序中,但是我想为每个应用程序指定单独的app.config文件. 说我有以下app.config设置为主应用程序: <appSettings> <add key="House" value="Stark"/> <add key="Motto" value="Winter is coming."/></appSettings> 另一个用于使用Assembly 我正在尝试将模块加载到我的应用程序中,但是我想为每个应用程序指定单独的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();

无论如何加载它,它使用正确的配置文件.

编辑:
这可能是将文件加载到ASP.NET应用程序的更好的解决方案:

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)"
总结

以上是内存溢出为你收集整理的c# – 动态加载程序集的应用程序配置全部内容,希望文章能够帮你解决c# – 动态加载程序集的应用程序配置所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1257523.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存