Подтвердить что ты не робот

Запись значений в файле app.config

может кто-нибудь помочь мне, как я могу установить/сохранить значения в файле app.config с помощью С#, возможно ли это вообще?

4b9b3361

Ответ 1

Если вы используете App.Config для хранения значений в разделе <app Key="" Value="" /> или в разделе "Пользовательские разделы", используйте класс ConfigurationManager, иначе используйте класс XMLDocument.

Вы можете использовать код, размещенный на CodeProject

Ответ 2

Попробуйте использовать следующий код:

    Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);
    config.AppSettings.Settings.Add("YourKey", "YourValue");
    config.Save(ConfigurationSaveMode.Minimal);

Это сработало для меня: -)

Ответ 3

В Framework 4.5 часть настроек ConfigurationManager AppSettings.Settings [ "key" ] предназначена только для чтения, поэтому мне пришлось сначала удалить ключ, а затем добавить его, используя следующее:

Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);

config.AppSettings.Settings.Remove("MySetting");
config.AppSettings.Settings.Add("MySetting", "some value");

config.Save(ConfigurationSaveMode.Modified);

Не волнуйтесь, вы не получите исключения, если попытаетесь удалить ключ, который не существует.

Этот пост дает хороший совет

Ответ 4

    private static string GetSetting(string key)
    {
        return ConfigurationManager.AppSettings[key];
    }

    private static void SetSetting(string key, string value)
    {
        Configuration configuration =
            ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        configuration.AppSettings.Settings[key].Value = value;
        configuration.Save(ConfigurationSaveMode.Full, true);
        ConfigurationManager.RefreshSection("appSettings");
    }

Ответ 5

Как уже упоминалось, вы можете сделать это с помощью ConfigurationManager.AppSettings.Settings. Но: Использование Settings[key] = value не будет работать, если ключ не существует.
Используя Settings.Add(key, value), если ключ уже существует, он присоединяется к новому значению к его значению, разделенному запятой, что-то вроде <add key="myKey" value="value1, value2, value3" />

Чтобы избежать этих неожиданных результатов, вы должны обрабатывать два сценария

  • Если запись с данным ключом существует? затем обновите его значение
  • если запись с данным ключом не существует? затем создайте новую запись (ключ, значение)

Код

public static void Set(string key, string value)
{
    var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

    var entry = config.AppSettings.Settings[key];
    if (entry == null)
        config.AppSettings.Settings.Add(key, value);
    else
        config.AppSettings.Settings[key].Value = value;

    config.Save(ConfigurationSaveMode.Modified);
}

Для получения дополнительной информации о чеке entry == null, отметьте этот пост.
Надеюсь, это поможет кому-то.

Ответ 6

Да, вы можете - см. ConfigurationManager

Класс ConfigurationManager включает членов, которые выполните следующие задачи:

  • Чтение и запись файлов конфигурации в целом.

Научитесь использовать docs, они должны быть вашим первым портом для вызова такого вопроса.

Ответ 7

Для консольного приложения .NET 4.0 ни один из них не работал у меня. Поэтому я использовал следующее ниже и работал:

private static void UpdateSetting(string key, string value)
{
    Configuration configuration = ConfigurationManager.
        OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
    configuration.AppSettings.Settings[key].Value = value;
    configuration.Save();

    ConfigurationManager.RefreshSection("appSettings");
}

Ответ 8

Попробуйте следующее:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);            
config.AppSettings.Settings[key].Value = value;
config.Save();
ConfigurationManager.RefreshSection("appSettings");

Ответ 9

        string filePath = System.IO.Path.GetFullPath("settings.app.config");

        var map = new ExeConfigurationFileMap { ExeConfigFilename = filePath };
        try
        {
            // Open App.Config of executable
            Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);

            // Add an Application Setting if not exist

                config.AppSettings.Settings.Add("key1", "value1");
                config.AppSettings.Settings.Add("key2", "value2");

            // Save the changes in App.config file.
            config.Save(ConfigurationSaveMode.Modified);

            // Force a reload of a changed section.
            ConfigurationManager.RefreshSection("appSettings");
        }
        catch (ConfigurationErrorsException ex)
        {
            if (ex.BareMessage == "Root element is missing.")
            {
                File.Delete(filePath);
                return;
            }
            MessageBox.Show(ex.Message);
        }