Хранение настроек c# в AppData папке

306
17 января 2018, 13:56

Доброго вечера. Прошу помочь разобраться почему следующий код не сохраняет измененные настройки в test.config в AppData. Если код в корне неверный поправьте пожалуйста Файл test.config создаётся в AppData но код ниже не изменяет его!

using System;
using System.Configuration;
using System.IO;
namespace Test {
    class Program {
        static public string pathConfig = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\test";
        static void Main(string[] args) {
            IntializeConfigurationFile();
            AddUpdateAppSettings("id", "777");
            Console.WriteLine(ReadSetting("id")); // вернул 555
            Console.ReadKey();
        }
        static public string ReadSetting(string key) {
            try {
                var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                var settings = configFile.AppSettings.Settings;
                if (settings[key].Value == null) {
                    return "not found";
                } else {
                    return settings[key].Value;
                }
            } catch (ConfigurationErrorsException e) {
                Console.WriteLine(e.Message);
                return "error";
            }
        }
        static void AddUpdateAppSettings(string key, string value) {
            try {
                var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                var settings = config.AppSettings.Settings;
                if (settings[key] == null) {
                    settings.Add(key, value);
                } else {
                    settings[key].Value = value;
                }
                config.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection("appSettings");
            } catch (ConfigurationErrorsException e) {
                Console.WriteLine("Error writing app settings : {0}", e);
            }
        }
        static public void IntializeConfigurationFile() {
            if (!File.Exists(pathConfig + "\\test.config")) {
                string[] buffer = {"<appSettings>",
                                        "<add key='status' value='on'/>",
                                        "<add key='id' value='555'/>",
                                   "</appSettings>"};
                File.WriteAllLines(pathConfig + "\\test.config", buffer);
                Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                AppSettingsSection appSettings = config.AppSettings;
                appSettings.File = pathConfig + "\\test.config";
                config.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection("appSettings");
            }
        }
    }
}
Answer 1

Сначала в настройки проекта добавляете поля

Потом в коде изменяете их и вызываете сохранение (Не забудьте подключить неймспейс):

using ConsoleApp1.Properties;
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Settings.Default.Id = 10;
            Settings.Default.Status = "Статус";
            Settings.Default.Save();
        }
    }
}

И теперь можно убедиться что настройки сохранились для конкретного пользователя:

READ ALSO
Azure доступ к FileStorage из WebApplication Service

Azure доступ к FileStorage из WebApplication Service

Приветствую ! Столкнулся со следующей проблемой, необходимо иметь возможность загрузки файлов в FileStorage из WebApplication Service с помощью VirtualNetwork...

239
Где и как можно использовать ключевое слово this? [требует правки]

Где и как можно использовать ключевое слово this? [требует правки]

Приведите пожалуйста несколько примеровКак оно работает я знаю, но где и как использовать еще не до конца понял

280