Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Как работать с app.config


Автор: ddll 20.3.2011, 15:10
Здравствуйте столкнулся с елементарной задачкой необходимо записывать последние время выполнения части кода при этом программа  должна постоянно висеть в процесах.
Мне посоветовали использовать для этого файл настроек app.config. Только как с ним работать все никак не могу разобраться. Я так понял что он имеет xml- формат и что необходимо подключить пространство имен System.Configuration. Только не доконца понял как мне задавать параметры а потом их считывать.

праметр который мне надо получать это строка даты прошлого выполнения части кода куда и как ее записывать а потом как получать?

Заранее спасибо за помощь!

Автор: Fitc 20.3.2011, 17:10
http://msdn.microsoft.com/ru-ru/library/system.configuration.configurationmanager%28v=VS.100%29.aspx

Автор: ddll 20.3.2011, 23:17
Там много различных вариантов, не до конца понятно а если проще я бы мог это решить и в txt количество последняя строка но хочется уже профессиональнее.
Можно чуть подробнее (с примером) а то чет совсем плохо въезжаю пока.
Спасибо!

Автор: LRC 21.3.2011, 09:20
using System.Configuration;

 static private Configuration _conf;
_conf = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);


Для примера файлик такой структуры:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="user" value="alex" />
    <add key="pass" value="pass" />
  </appSettings>
</configuration>


И соответственно пару методов бля работы:

 static public string Name
        {
            get
            {
                return _conf.AppSettings.Settings["name"].Value;
            }
            set
            {
                _conf.AppSettings.Settings["name"].Value = value;
                _conf.Save(ConfigurationSaveMode.Modified);
            }
        }

        static public string User
        {
            get
            {
                return _conf.AppSettings.Settings["user"].Value;
            }
            set
            {
                _conf.AppSettings.Settings["user"].Value = value;
                _conf.Save(ConfigurationSaveMode.Modified);
            }
        }

Удачи!

Автор: ddll 21.3.2011, 13:23
LRC спасибо большое за ответ но
Торможу на мелочах запускаю твой код 
"В экземпляре объекта не задана ссылка на объект."

Автор: LRC 21.3.2011, 14:28
а в References добавил system.configuration?

Автор: ddll 21.3.2011, 14:29
да

Автор: LRC 21.3.2011, 14:35
Файл *.config существует, с нужной тебе стуркуторой?


Автор: ddll 21.3.2011, 15:00
Да я его создал.

Автор: LRC 21.3.2011, 15:34
видеть бы что там у тебяsmile
Попробуй поставить проверку перед открытием

 if (!File.Exists(Application.ExecutablePath + ".config")) //если файла нет
            {
//создаем его
                var def_config = new StreamWriter(Application.ExecutablePath + ".config", false, Encoding.UTF8);
                def_config.Write(
"<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" +
"<configuration>\n" +
"  <appSettings>\n" +
"    <add key=\"user\" value=\"блаблабла\" />\n" +
"    <add key=\"pass\" value=\"блаблабла\" />\n" +
"  </appSettings>\n" +
"</configuration>\n");
                def_config.Close();
            }

            _conf = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);
 ...

Проверял - все работает.

Автор: ddll 21.3.2011, 15:56
Я понял в чем проблемма спасибо большое у менгя консольное приложение, там все чуть по другому подписываеться.
 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)