Мы запускаем сложную систему, написанную на C# .NET 3.5, состоящую из 20 + сайтов, 10 + оконных служб и различных запланированных задач и вспомогательных приложений.Лучший способ обработки нескольких экземпляров файла конфигурации?
Каждый из них поставляется в комплекте с одной или несколькими библиотеками DLL. Эти DLL имеют обширные настройки конфигурации, и это превратилось в кошмар, где мы поддерживаем более 40 конфигурационных файлов для нескольких экземпляров одних и тех же библиотек классов.
Мы не регистрируем наши DLL в GAC по различным причинам: 1) Нам нравится гибкость быстрого развертывания изменений в выборочных проектах без восстановления всей системы или возникновения ненужного времени простоя. 2) Некоторые экземпляры DLL требуют немного разных конфигураций; например, в некоторых проектах используются разные строки подключения, адреса электронной почты для уведомлений и т. д.
Мы экспериментировали с атрибутами файла AppSettings/configSource в Web.config/App.config, но они работают только с относительными путями, а не с проектами. Мы рассмотрели вопрос о сохранении значений по умолчанию в machine.config, но это миссия, слишком запутанная и наполненная важными вещами, не связанными с нашими проектами.
Наше текущее «решение» заключается в использовании нашего собственного файла конфигурационного файла, который сначала проверяет конфигурацию в папке «bin» текущего проекта, а если этого не существует, он загружается из жестко запрограммированного центрального местоположения. Это позволяет нам переопределить настройки, если это необходимо, но использовать настройки по умолчанию в остальное время.
В конечном итоге мы хотим, чтобы в каждой из них были установлены стандартные настройки по умолчанию для каждой библиотеки классов, а затем каждый экземпляр мог иметь дополнительный файл конфигурации, который только переопределяет те настройки, которые отличаются от значений по умолчанию.
Есть ли предлагаемый стандартный способ решения этой проблемы в .NET?
Я не могу претендовать на такой опыт, но не для этого нужен реестр? Я уверен, что у него есть своя проблема, но интересно, следует ли рассматривать ее как решение? –
все они запускаются на одном сервере? – Amirshk
(отказ от ответственности: это то, что я написал): Существует аналогичная тема: http://stackoverflow.com/questions/1987013/how-to-setup-web-config-for-build-to-multi-environments- без изменений кода/2024921 # 2024921, и я написал об инструменте, который я там написал, который также может помочь вам здесь. FWIW. –