c# - 相当于库 (DLL) 的 'app.config'

标签 c# .net dll settings app-config

对于库 (DLL) 是否有等同于 app.config 的东西?如果没有,存储特定于库的配置设置的最简单方法是什么?请考虑该库可能用于不同的应用程序。

最佳答案

可以有单独的配置文件,但您必须“手动”阅读它,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 本身一起发布的文件。

在 VS 项目中,您应该将 .config 文件“复制到输出目录”设置设置为“始终复制”。

以上为基本示例代码,对全尺寸示例感兴趣的 friend 请引用this other answer .

关于c# - 相当于库 (DLL) 的 'app.config',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5190539/

相关文章:

c# - 在 aspx 中,当在文本框上按下 "Enter"时如何触发按钮单击事件,而源 cs 文件中定义的按钮单击事件

c# - 将 EditorFor entry 的首字母大写

c# - mysql 查询上的 saveFileDialog 文件夹路径

.net - 条件语句产生与 If Then 不同的结果

c# - 使用 ASP.NET C# 解析 JSON 中的数组

c# - 如何使用 Entity Framework 关联来自多个上下文的对象

C# 将字符串从 UTF-8 转换为 ISO-8859-1 (Latin1) H

c# - Fluent合并到main.exe后出现的问题

Delphi XE4 - 在 DLL 中动态创建表单导致 AV

c++ - 替换 Dll 中的类以进行单元测试