У меня есть решение с несколькими выходными проектами (веб-сайт, инструмент администратора и уровень API SOAP).
Каждый из них совместно использует общие проекты в решении (уровень обслуживания, уровень данных и т. Д.). В одном из этих общих проектов я хочу сохранить слой конфигурации.
Сейчас у нас есть три отдельных файла конфигурации appsettings для каждого выходного проекта -
development.AppSettings.config
testing.AppSettings.config
production.AppSettings.config
Итак, всего есть девять конфигурационных файлов. В каждом проекте используется только один, так как на них ссылаются с помощью атрибута configSource в узле appsettings web.config.
В любом случае, становится все труднее, когда мы хотим добавить / удалить значения из наших файлов конфигурации, потому что это означает, что для этого нам нужно изменить все девять файлов. И вот что я хотел бы сделать:
В общем проекте у нас есть три конфигурационных файла, как указано выше. Они будут установлены для копирования в выходной каталог, чтобы у каждого проекта была их копия. Это будет «базовый» конфиг.
Затем в каждом проекте я хотел бы иметь три файла снова, но они не обязательно должны содержать те же значения, что и базовые конфигурации. Однако, если они это сделали, то значение базовой конфигурации будет переопределено значением в выходной конфигурации проекта. Полагаю, это форма наследования конфигурации.
При запуске приложения я бы хотел получить эти два файла конфигурации - базовый конфигурационный файл и конфигурационный файл проекта. Затем установите соответствующие параметры приложения.
Что мне интересно, каков хороший способ определить, какой файл использовать? Кроме того, мне интересно, является ли это хорошим способом совместного использования значений приложений в большом решении, и если есть другой, возможно, более эффективный способ сделать это?
Если я нахожусь в режиме разработки, то мне не нужен файл production.appsettings.config, и наоборот, если я нахожусь в режиме разработки.
Есть ли простой способ получить режим (разработка / тестирование / производство), в котором я нахожусь, прежде чем я уйду и получу конфигурации?