为了账号安全,请及时绑定邮箱和手机立即绑定

相当于库的“app.config”(DLL)

相当于库的“app.config”(DLL)

精慕HU 2019-08-31 10:46:17
是否有相当于app.config库(DLL)?如果不是,存储特定于库的配置设置的最简单方法是什么?请考虑该库可能在不同的应用程序中使用。
查看完整描述

3 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

您可以拥有单独的配置文件,但是您必须“手动”读取它,ConfigurationManager.AppSettings["key"]它将只读取正在运行的程序集的配置。


假设您使用Visual Studio作为IDE,可以右键单击所需的项目→添加→新项→应用程序配置文件


 


这将添加App.config到项目文件夹,将您的设置放在<appSettings>部分下。如果您没有使用Visual Studio并手动添加文件,请确保为其指定名称:DllName.dll.config,否则以下代码将无法正常工作。


现在从这个文件中读取有这样的功能:


string GetAppSetting(Configuration config, string key)

{

    KeyValueConfigurationElement element = config.AppSettings.Settings[key];

    if (element != null)

    {

        string value = element.Value;

        if (!string.IsNullOrEmpty(value))

            return value;

    }

    return string.Empty;

}

并使用它:


Configuration config = null;

string exeConfigPath = this.GetType().Assembly.Location;

try

{

    config = ConfigurationManager.OpenExeConfiguration(exeConfigPath);

}

catch (Exception ex)

{

    //handle errror here.. means DLL has no sattelite configuration file.

}


if (config != null)

{

    string myValue = GetAppSetting(config, "myKey");

    ...

}

您还必须添加对System.Configuration命名空间的引用,以使ConfigurationManager类可用。


在构建项目时,除了DLL之外,您还将拥有DllName.dll.config文件,这是您必须使用DLL本身发布的文件。


以上是基本示例代码,对于那些对全尺寸示例感兴趣的人,请参考其他答案。


查看完整回答
反对 回复 2019-08-31
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

配置文件是应用程序范围的,而不是汇编范围的。因此,您需要将库的配置部分放在使用您的库的每个应用程序的配置文件中。


也就是说,从appSettings类库中的应用程序配置文件(特别是部分)获取配置并不是一个好习惯。如果您的库需要参数,那么它们应该作为方法参数在构造函数,工厂方法等中传递给任何调用库的人。这可以防止调用应用程序意外重用类库所期望的配置条目。


也就是说,XML配置文件非常方便,因此我发现最好的折衷方案是使用自定义配置部分。您可以将库的配置放在XML文件中,该文件由框架自动读取和解析,从而避免潜在的事故。



查看完整回答
反对 回复 2019-08-31
  • 3 回答
  • 0 关注
  • 467 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信