繁体   English   中英

C# App.config Visual Studio 中的嵌入式资源

[英]C# App.config Embedded Resource in Visual Studio

Visual Studio 可以选择将 App.config 文件的构建操作应用为“嵌入式资源”,这意味着在同一个最终 exe 中包含 App.config 的内容。 美好的。

问题是:如何读取嵌入式 App.config 里面的数据 例如来自给定键的 appSetting 值?

我之前用来从 App.config 读取的代码(物理上写在磁盘上的代码,通常是 nameoftheprogram.exe.config),似乎不再工作了。

string s = System.Configuration.ConfigurationManager.AppSettings["mykey"];

可能它必须重新适应为这项工作设计的其他 C# 类。

有任何想法吗?

您可以使用接口 IConfigUtility 方法:

IConfigUtility.cs:

public interface IConfigUtility
{
    string LogFilePath
    {
        get;
    }

    string GetAppSetting(string key);
}

配置实用程序.cs

using System;
using System.Configuration;

public class ConfigUtility : IConfigUtility
{
    Configuration config = null;
    public string LogFilePath
    {
        get
        {
            return GetAppSetting(@"Code to read the log file path");
        }
    }

    public ConfigUtility()
    {
        var exeConfigPath = this.GetType().Assembly.Location;
        try
        {
            config = ConfigurationManager.OpenExeConfiguration(exeConfigPath);
        }
        catch (Exception)
        {
        //handle error here.. means DLL has no satellite configuration file.
        }
    }

    public virtual string GetAppSetting(string key)
    {
        if (config != null)
        {
            KeyValueConfigurationElement element = config.AppSettings.Settings[key];
            if (element != null)
            {
                string value = element.Value;
                if (!string.IsNullOrEmpty(value))
                    return value;
            }
        }

        return string.Empty;
    }
}

现在您可以使用上面的 ConfigUtility.cs 并从 App.config 文件中读取您的 appsettings 密钥

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM