Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение настроек одного приложения из другого 
:(
    Опции темы
Stolzen
Дата 22.10.2010, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: нет
Всего: 48



Приветствую!

Возникла проблема с изменением настроек одного приложения через другое.

Храню все настройки основного приложения (пр1) в Properties.Settings

Код

            Properties.Settings settings = new Properties.Settings();

            this.databasePath = settings.ConnectionStringDatabase;
            this.host = settings.ConnectionStringServer;


Потребовалось изменять настройки для пр1 через другое приложение - вспомогательную утилиту (пр2). Что я сделал:

1. Изменил в Settings.cs internal sealed partial class Settings на public partial class Settings, т.е. сделал его доступным.
2. Подключил окружение пр1 в пр2 и загружал настройки следующим образом:

Код

        CommodityCirculation.Properties.Settings settings = new CommodityCirculation.Properties.Settings();

        private void AdminToolForm_Load(object sender, EventArgs e)
        {
            textBox1.Text = settings.ConnectionStringDatabase;
            textBox2.Text = settings.ConnectionStringServer;
        }


А пытался сохранить вот так:

Код

            settings.ConnectionStringDatabase = textBox1.Text;
            settings.ConnectionStringServer = textBox2.Text;

            settings.Save();


В результате - пр2 загружает вовсе не то, что надо (загружает оно дефолтные настройки) и сохраняет все настройки в другую директорию под своим именем (AdminTool.vshost.exe_ <...>)

Как бы заставить это все работать, как надо? Чтобы из пр2 изменения вносились в xml-файл настроек для пр1? Хотелось бы какого-нибудь красивого гибкого решения, а не просто напрямую указывать путь до файла настроек и править его. Есть идеи? 

Спасибо.


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
Мурлыкатам_
Дата 22.10.2010, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 5.2.2007
Где: город-герой Минск

Репутация: нет
Всего: 2



Используй стандартный файл конфигурации .net - app.config.xml
Вся работа с ним реализована в стандартном классе: http://msdn.microsoft.com/en-us/library/sy...28VS.80%29.aspx
Очень много материала про это в МСДН.

Если нун изменить настройки из другого приложения:
1) В первом реализуешь проверку, что файл конфига был изменен (на ласт модифаед дату)
2) во втором реализуешь чтение хмл документа, т.е. берешь у первого приложения его конфиг как хмл файл и твори с ним че хочешь. Потом сохраняешь файл во втором приложении.
3) Первое приложение заметив что файл изменился - поднимает заново настройки.

А лучше сделать все ремотингом smile .Net Remoting. Одно приложение управляющее - второе ведомое, у них общий объект. Управляющее в общий объект пишет стэк комманд для ведомого, ведомое вынимает эти комманды и выполняет.


--------------------
Хочешь что-то сделать - сделай это сам или попроси помощи на винграде smile
user posted image
PM MAIL ICQ   Вверх
Stolzen
Дата 23.10.2010, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: нет
Всего: 48



Цитата(Мурлыкатам_ @  22.10.2010,  20:59 Найти цитируемый пост)
Используй стандартный файл конфигурации .net - app.config.xml

Собственно, его и использую. Только через Properties.Settings. Спасибо за наводку, поковыряю ConfigurationManager (по ссылке пишут, что This class replaces the ConfigurationSettings class, which is deprecated.)


Цитата(Мурлыкатам_ @  22.10.2010,  20:59 Найти цитируемый пост)
2) во втором реализуешь чтение хмл документа, т.е. берешь у первого приложения его конфиг как хмл файл и твори с ним че хочешь. Потом сохраняешь файл во втором приложении.

А вот этого как раз хотелось бы и избежать. Во-первых, сложно знать, куда именно Properties.Settings сохранит свой xml (там директории создаются вида CommodityCirculation.vsho_StrongName_uxpyaewqage3pphrrzfcglb42er2g1ky, т.е. с кучей рандомной ерунды на хвосте. Отчего так - я не знаю, наверное, чтобы настройки одной версии не пересекались с настройками другой? 
Вообще конечно можно получить список папок, взять ту, которая изменена самой последней - и вперед. Оставлю это как самый последний вариант, верится мне, что где-то существует более изящное решение. Пока покопаю в сторону ConfigurationManager.


А вот последнее (.Net Remoting) звучит интересно. Попадалось мне что-то про это, надо бы почитать. 

Это сообщение отредактировал(а) Stolzen - 23.10.2010, 00:37


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
inbruk
Дата 3.12.2010, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 25.11.2010

Репутация: нет
Всего: нет



вот здесь пример программы, которая меняет app.Config себе, но при не значительном изменении она сможет менять appConfig другой программе: 
 Как создавать, читать, изменять, удалять конфигурацию в файле app.Config на C# 

А вот тут пример как менять значения в реестре, таким образом тоже можно сделать то что ты хочешь:  Как читать/писать данные в ключ реестра на C# 
PM MAIL   Вверх
Stolzen
Дата 5.12.2010, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: нет
Всего: 48



Спасибо большое, в принципе проблему решил (правда, через одно место). Но для себя прочту - в будущем наверняка пригодится.


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.