C# Встроенный ресурс App.config в Visual Studio - PullRequest
0 голосов
/ 12 июля 2020

Visual Studio имеет возможность применить действие сборки для файла App.config как «Встроенный ресурс», что означает включение в тот же конечный exe-файл содержимого App.config. Отлично.

Проблема : как прочитать данные внутри встроенного App.config? Например, значение appSetting из заданного ключа?

Код, который я использовал раньше для чтения из App.config (тот, который физически записан на диск и который обычно называется nameoftheprogram.exe.config), похоже, не

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

Вероятно, его необходимо адаптировать с другими C# классами, разработанными для этой работы.

Есть идеи?

1 Ответ

1 голос
/ 12 июля 2020

У вас может быть интерфейс IConfigUtility с методом:

IConfigUtility.cs:

public interface IConfigUtility
{
    string LogFilePath
    {
        get;
    }

    string GetAppSetting(string key);
}

ConfigUtility.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

...