powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как поменять app.config при запуске приложения?
7 сообщений из 7, страница 1 из 1
Как поменять app.config при запуске приложения?
    #38795420
Жентос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Было у меня приложение, которое хранило данные об окружении в файлике environment.xml. Внезапно, возникла необходимость, парсить не environment.xml, а environment_new.xml, причем динамически (т.е. юзер поменял конфиг и приложение после старта уже смотрит на другое окружение, перезапуск необходим). Все казалось бы, ничего, но вот засада: ссылка на файлик находится в app.config.

Пробовал менять его ручками -- все работает, как надо. Но ручками менять app.config очень нехота. Пробовал его прочитать в момент создания приложения:

Код: c#
1.
string te = ConfigurationManager.AppSettings["TestEnvironment"];



а говорят, что te - это null .

В принципе, я бы и не менял app.configб но вот такая конструкция читает настройки корректно:
Код: c#
1.
Configuration cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);



а такая, уже нет:
Код: c#
1.
2.
string configPath = @"TE\environment_new.xml";
Configuration cfg = ConfigurationManager.OpenExeConfiguration(configPath);



Подскажите, как лучше из положения выйти.

Кусочек app.config:

Код: xml
1.
2.
3.
4.
5.
<configuration>
...
   <TestEnvironment configSource="TE\environment_new.xml" />
...
<configuration>
...
Рейтинг: 0 / 0
Как поменять app.config при запуске приложения?
    #38795491
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жентос, 16766056
...
Рейтинг: 0 / 0
Как поменять app.config при запуске приложения?
    #38796575
Жентос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, код получился ужасный во всех смыслах....

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
string environmentPostfix, newConfigSourceText;
            

 // Get environment suffix from config
            XmlDocument configXml = new XmlDocument();
            configXml.Load(ConfigFile);
            XmlNode configCurrentEnvironmentNode = configXml.SelectSingleNode("/Config/CurrentEnvironment");
            environmentPostfix = configCurrentEnvironmentNode.InnerText;

            // Get current environment from app.config
            Configuration cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            string configSourceText = cfg.Sections["TestEnvironment"].SectionInformation.ConfigSource;

            // Replace current ConfiGSource text according to loaded changes
            int firstpos = configSourceText.IndexOf("_");
            int lastpos = configSourceText.IndexOf(".");
            newConfigSourceText = configSourceText.Substring(0, firstpos + 1); //index is zero-based, so increment is required
            newConfigSourceText += environmentPostfix;
            newConfigSourceText += configSourceText.Substring(lastpos, configSourceText.Length - lastpos);
            cfg.Sections["TestEnvironment"].SectionInformation.ConfigSource = newConfigSourceText;

            // Save configuration file
            cfg.Save(ConfigurationSaveMode.Modified);
            ConfigurationManager.RefreshSection("TestEnvironment");
...
Рейтинг: 0 / 0
Как поменять app.config при запуске приложения?
    #38796581
Жентос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарю всех за помощь.

И у меня есть еще пара вопросов:
- подскажите, я могу в объекте Configuration cоздавать новые разделы. В теперешнем решении меня не устраивает то, что в конфигурации хранится ссылка на существующий файл.
- что можно почитать, чтобы быстро понять, как с конфигурациями работать, что там должно быть, а что нет?
...
Рейтинг: 0 / 0
Как поменять app.config при запуске приложения?
    #38797141
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жентос что там должно быть, а что нет?
В идеальном случае там не должно быть секций, которые добавили программно.
Для изменяемых из аппликации значений можно и другой файл или базу данных использовать...
Исключения конечно есть - когда аппликация после запуска шифрует коннекшен стринг....
Но вот секции то зачем добавлять?
Если для создания первого файла из пустого - то этож разовая операция, никто кроме программера не сможет ее использовать....
...
Рейтинг: 0 / 0
Как поменять app.config при запуске приложения?
    #38797273
Жентос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Для изменяемых из аппликации значений можно и другой файл или базу данных использовать...

Да, понимаю.
Но вот программа ходит за настройками именно в тот файл, который в app.config. В идеале, я бы хотел при старте программы указывать этот файл и убрать его из app.config (чтобы настройка бралась именно для Configuration из ConfigurationManager), но парсить именно нужный файл настроек у меня пока не получилось. Знаний пока маловато

D129Но вот секции то зачем добавлять?
Если для создания первого файла из пустого - то этож разовая операция, никто кроме программера не сможет ее использовать....
В настоящий момент, в app.config находится ссылка на существующий файл, которая будет изменена при старте программы. Если файла нет на диске, проект не запустится. Если в аpp.config не будет раздела, проект запустится нормально. Приложение - робот для тестов. Теоретически, у каждой виртуальной машины может быть свой набор файлов с настройками, а тот, который в app.config указан, может и не быть.
...
Рейтинг: 0 / 0
Как поменять app.config при запуске приложения?
    #38797413
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жентос но парсить именно нужный файл настроек у меня пока не получилось. Знаний пока маловато
Вы как-то в кучу все валите. Сложно же будет потом разбираться.
Апп конфиг - это не место чтобы хранить повторяющиеся параметры или сценарии для робота.
Адрес файла сценариев - да, но это аналог строки подключения к БД, логически.

Вот например это уже слишком сложно для меня:
ЖентосВ настоящий момент, в app.config находится ссылка на существующий файл, которая будет изменена при старте программы. Если файла нет на диске, проект не запустится. Если в аpp.config не будет раздела, проект запустится нормально. Приложение - робот для тестов. Теоретически, у каждой виртуальной машины может быть свой набор файлов с настройками , а тот, который в app.config указан, может и не быть .

:-/
:-(
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как поменять app.config при запуске приложения?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]