Используя тот же app.config для службы Windows и GUI - PullRequest
3 голосов
/ 08 февраля 2012

У меня запущена служба Windows, которая использует свой app.config для получения некоторых важных значений. Теперь я хотел бы предоставить другое приложение с графическим интерфейсом, которое предоставляет способ изменить эти важные значения и сохранить его в том же app.config.

У меня такой вопрос: можно ли будет поделиться этим app.config между проектами, используя «Добавить как ссылку», и если я затем использую свое приложение с графическим интерфейсом и изменим некоторые значения, это будет отражено в службе Windows

EDIT: Если это работает, то, возможно, кто-то также знает подробности работы ссылок в более техническом виде?

Ответы [ 3 ]

4 голосов
/ 08 февраля 2012

Оба проекта могут совместно использовать app.config. Не уверен насчет связывания, но вы можете иметь одинаковую структуру и значения в двух разных конфигурациях, но при его развертывании разверните его в той же папке, что и служба Windows .

Теперь, что касается обновления значений из app.config, они не будут отражены в службе Windows, если служба Win запущена. Вам нужно будет перезапустить службу Windows для этого. Потому что настройки приложения кэшируются в памяти и загружаются в память при запуске приложения. Вы можете использовать ConfigurationManager.RefreshSection для обновления загруженной конфигурации в памяти. Вы можете прочитать об этом на MSDN . Вам придется сделать это в вашей службе Windows.

Надеюсь, эта информация поможет вам.

0 голосов
/ 08 февраля 2012

Вообще говоря, каждое третье вызываемое приложение из «службы Windows» использует файлы конфигурации, развернутые проектом Windows.Благодаря этому текущая конфигурация зависит от начального проекта (это может быть wf, wpf, web ...).

просто не забудьте установить дополнительные файлы конфигурации, которые будут развернуты с приложением

Свойства -> Копировать в выходную папку -> Копировать всегда Это поведение довольно легко понять, если вы посмотрите в каталог развернутого приложения.Он содержит все проекты в виде dll и все другие файлы, настроенные для копирования в конечную папку.По умолчанию каждый проект имеет одинаковый доступ к этим файлам, так как все они находятся в одном месте.

Но будьте внимательны к тому, что Амар Палсапур говорит о том, как кэшируются данные appconfig.

0 голосов
/ 08 февраля 2012

Если ваше приложение с графическим интерфейсом не зависит от каких-либо значений из app.config (т.е. просто отредактируйте его), и вы планируете запускать приложение с графическим интерфейсом из той же папки, что и ваша служба, вы можете просто открыть его, как любое (text /xml) файл (возможно, даже включает диалог открытия файла).

В зависимости от вашей VCS вы можете «связать» app.config из вашего проекта службы Windows с вашим проектом приложения с графическим интерфейсом - я лично использовал бы SubVersionэто с Externals .

...