Подтвердить что ты не робот

Как вы обрабатываете несколько файлов web.config для нескольких сред?

То, как я в настоящее время обрабатываю это, - это несколько файлов конфигурации, например:

web.config
web.Prod.config
web.QA.config
web.Dev.config

Когда проект развертывается в разных средах, я просто переименовываю соответствующий файл с правильными настройками.

У кого-нибудь есть предложения по тому, как справиться с этим лучше?

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

  • URL-адреса конечной точки клиента WCF и безопасность
  • Конфигурации настраиваемых баз данных
  • Строки сеанса сеанса
  • Настройки log4net
4b9b3361

Ответ 1

У Скотта Гу было статья об этом раз. Решением, которое он представил, было использование события Pre-build для копирования правильной конфигурации на место в зависимости от выбранной конфигурации сборки.

Я также заметил, что здесь есть аналогичный question здесь.

Ответ 3

В Visual Studio я создаю события сборки xcopy и сохраняю все файлы конфигурации в папке /config. Вам нужно только одно событие для всех конфигураций, если вы назовете свои файлы после конфигурации сборки: например, перезапись web.config с помощью /config/web. $(Конфигурация).config

Ответ 4

Мой любимый способ справиться с этим - с атрибутом configSource. По общему признанию, я использую это только для одного элемента (<connectionStrings>), но он обеспечивает простой способ обмена и отрисовки различных сегментов web.config(что я делаю во время установки через проект WebSetup).

Ответ 5

Я также использую web.DEV.config, web.TEST.config, web.PROD.config и т.д.

Я считаю этот способ самым простым, простым и прямым способом, если ваши проекты не сложны. Мне не нравится делать вещи сложнее, чем необходимо.

Однако я использовал NAnt, и я думаю, что это хорошо работает для этого. Вы можете настроить сборки для разных сред. NAnt берет некоторое чтение, чтобы узнать, как его использовать, но он довольно гибкий.

http://aspnet.4guysfromrolla.com/articles/120104-1.aspx

http://nant.sourceforge.net/

Я использовал его вместе с CruiseControl.net и NUnit для выполнения автоматических ежедневных сборок с помощью проверки unit test и думал, что они хорошо работают вместе.

Ответ 6

Это действительно зависит от того, какая разница между средами, которые заставляют вас использовать разные файлы web.config. Можете ли вы дать больше информации о том, почему каждая среда в настоящее время нуждается в другом?

Ответ 7

Как мы это делали, это переопределить раздел AppSettings:

<appSettings file="../AppSettingsOverride.config">
    <add key="key" value="override" />    
    ...
</appSettings>

Это работает только для раздела appSettings и поэтому полезно только в определенной степени. Я был бы очень заинтересован в более надежных решениях.

Изменить ниже

Просто смотрел это: http://channel9.msdn.com/shows/10-4/10-4-Episode-10-Making-Web-Deployment-Easier/

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

Ответ 8

У нас есть несколько обходных решений (не все из них выполняются с помощью web.config, но та же идея)

  • Мы включаем несколько конфигурационных файлов в пакетное развертывание. Во время установки мы указываем среду, на которую мы устанавливаем.
  • Перенесите все настройки среды на сервер базы данных для этой среды. WebServer предоставляет свою среду при запросе имени сервера
  • Предоставить несколько настроек (по 1 на каждую среду) и с помощью кода запросить различные настройки.
  • Комбинация 2 и 3 (переопределить часть настроек на основе среды - например, имя сервера приложений)

Ответ 9

С помощью самых разных программных средств управления версиями (subversion, git и т.д.) вы можете игнорировать определенные файлы.

Таким образом, в подрывной работе я бы:

configure.template.php - этот файл имеет версию и содержит шаблонные данные конфигурации, такие как пустой DSN configure.php - этот файл игнорируется, поэтому изменения в нем не отслеживаются.

В подрывной игре способ сделать это:

svn pe svn: игнорировать. Он откроет ваш редактор, затем вы напечатаете configure.php

Сохраните, выйдите, проверьте свои изменения, и вам хорошо идти.