Проблемы .NET App.Config в нескольких проектах - PullRequest
3 голосов
/ 21 января 2011

У меня есть решение, которое содержит два проекта.Один проект - это служба Windows, которая содержит несколько классов для выполнения различных функций.Другой проект - это приложение Windows Form, предназначенное для выполнения различных задач тестирования и выполнения, которые служба выполняет по требованию.Например, служба будет выполнять несколько различных задач через определенный промежуток времени, но если вы хотите выполнить одну из этих задач до истечения этого промежутка времени, вы можете загрузить приложение Windows Forms и немедленно выполнить одну из задач.Приложение Windows Form (здесь и далее называемое «тестер») ссылается на проект службы Windows (здесь и далее «служба»).Когда тестер загружается, он создает экземпляр одного из классов из Сервиса.Всякий раз, когда нажимаются кнопки для выполнения задачи, он ссылается на тот экземпляр, который был создан, и вызывает различные методы класса.Служба использует параметры приложения для конфигурации и, следовательно, имеет файл app.config.Доступ к настройкам конфигурации осуществляется с помощью [ProjectName] .Properties.Settings.Default. [SettingName].Когда параметры конфигурации для тестера изменяются в его собственном app.config (или exe.config после выпуска), параметры обновляются без проблем.Если тестер закрыт, конфигурация изменена, а затем вновь открыта, новые параметры будут заполнены.Если в настройках вызывается метод перезагрузки, конфигурация обновляется без проблем.Сервис работает аналогичным образом.Настройки конфигурации могут быть обновлены без проблем.

Проблема заключается в том, что если необходимо изменить конфигурацию службы, когда методы службы вызываются из тестера, конфигурация не принимает новые настройки.При любых настройках будет использоваться проект.Я не могу заставить тестировщика распознать, что app.config / exe.config для службы изменился, и новая конфигурация должна быть перезагружена и использована вместо той конфигурации, которая использовалась при сборке проекта в Visual Studio.Возможно, я недостаточно осведомлен об этой теме, но мне кажется, что файл app.config сворачивается в файл .exe, создаваемый службой, при его сборке.

Я пытался инкапсулировать перезагрузкуметод для Сервиса и вызов его, и это, кажется, не имеет значения.

У меня есть пример проекта, который выполняет, как описано выше, на самом базовом уровне.Идеальная цель состоит в том, чтобы иметь возможность изменять файл exe.config или файлы «на лету» и сделать так, чтобы и Служба, и Тестер забрали их без проблем.Если вы хотите точно понять, что я имею в виду с точки зрения кодирования, пример проекта можно найти здесь: пример решения

Любая помощь будет принята с благодарностью.Спасибо за ваше время.

Обновление

Мне удалось найти решение этой проблемы, но мне все еще интересно, есть ли лучший способ.Используя app.config, который используется совместно обоими проектами, и используя Configuration Manager вместо параметров приложения, все работает так, как ожидается.Я предпочитаю использовать настройки приложения, если это вообще возможно;однако он будет работать с использованием общего файла app.config, а Configuration Manager указывает на этот файл app.config.

Ответы [ 2 ]

0 голосов
/ 21 января 2011

Нашел решение.В решение должен быть добавлен app.config, как описано выше в моем обновлении.После такой ссылки вы можете добавить файл настроек в проект и добавить настройки / конфигурацию в проект, и они будут добавлены в файл настроек решений.Это переместится со сборкой и исправит проблему, с которой я столкнулся.

0 голосов
/ 21 января 2011

В одном варианте обе программы загружаются из одного и того же файла конфигурации:

http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.openexeconfiguration.aspx

...