Для чего нужны файлы Web.Debug.config и Web.Release.Config?

99

Я просто обновился до Visual Studio 2010 и MVC 2.0, и я заметил, что у Web.config есть два дополнительных файла, прикрепленных к нему? Используются ли эти файлы для указания определенных параметров отладки и выпуска, поэтому вы не загромождаете основной файл Web.config?

Имеет ли смысл разместить строку соединения в корневом файле Web.config, если у меня есть локальный и удаленный в отладке и выпуске Web.configs соответственно?

Спасибо!

Теги:
asp.net-mvc
visual-studio-2010
web-config
asp.net-mvc-2

4 ответа

94
Лучший ответ

Это новая функция преобразования Web.config в Visual Studio 2010. Дополнительная информация здесь.


Изменить:

Используются ли эти файлы для указания определенных параметров отладки и выпуска, поэтому вы не загромождаете основной файл web.config?

Это не ограничивается тремя файлами, вы можете (теоретически) иметь столько файлов, сколько у вас есть. "Верхний уровень" Web.config предоставляет шаблон вашей веб-конфигурации. Файлы под ним предоставляют значения замены, специфичные для этой среды (например, если у вас разные строки подключения для локального /stage/test/whatever ).

Имеет ли смысл разместить строку соединения в корневом файле web.config, если у меня есть локальный и удаленный в отладке и выпуске web.configs соответственно.

Было бы разумно, если бы он не изменился между средами. Похоже, в вашем случае это так, в вашем случае нет, было бы бессмысленно оставлять его в Web.config.

  • 11
    Эта функция наполовину испечена даже через 4 года! Работает только при развертывании в пакеты Azure / Publishing. Вот интересная ветка: forums.asp.net/t/1532038.aspx
9

Это файлы преобразования Web.config. Развертывание веб-сайта ASP.NET с использованием Visual Studio: Преобразование файлов Web.config:

Существует два способа автоматизации процесса изменения параметров файла Web.config: преобразования Web.config и параметры веб-развертывания. Файл преобразования Web.config содержит разметку XML, которая указывает, как изменить файл Web.config при его развертывании.Вы можете указать различные изменения для конкретных конфигураций сборки и для конкретных публиковать профили. Конфигурации сборки по умолчанию - Debug и Release, и вы можете создавать пользовательские конфигурации сборки. Опубликовать профиль обычно соответствует среде назначения.

1

В случае, если кто-то заинтересован, вот что я написал, чтобы иметь динамическую строку соединения для среды. Я хотел развернуть код в любой среде (Dev, Test, Pre-Prod, Prod...), не беспокоясь об изменении строк подключения. Я не мог найти хороший способ сделать это с помощью Asp.Net MVC 4, поэтому я придумал свой собственный способ использовать файл свойств для каждой среды.

Может быть лучшее решение, я пришел из фона Wicket/Java и недавно начал работать с MVC 4, поэтому возможно лучшее решение. Но вот ссылка на мой вопрос и ответ для динамической строки подключения:

Динамическая строка подключения Asp.net MVC 4

-3

Это было что-то долгое время в VS. К сожалению, проблема с реализацией. Например, рассмотрим этот сценарий (VS.2010 Ultimate, все SP):

Web.Config

  • Раздел "Нет связей"
  • Полномочия пользователя/роли/etc. Конфигурация поставщика с помощью connectionStringName = "test"

Web.Release.Config

  • Отсутствие конфигурации членства (уже указано в главном web.config)
  • connectionStrings, включая CS с именем "test"

Web.Debug.Config

  • Отсутствие конфигурации членства (уже указано в главном web.config)
  • connectionStrings, включая CS с именем "test"

При выполнении приложения появляется следующая ошибка:

Имя соединения "test" не было найдено в конфигурации приложений или строка подключения пуста.

Другими словами, поскольку элементы строки подключения находятся в файлах конструктора Release/Debug и используются элементами конфигурации в основном файле (Web.config), он не может его решить.

  • 5
    Если честно, если у вас есть строка подключения с именем test в ваших файлах конфигурации отладки и выпуска, она действительно должна быть в основном файле web.config с соответствующими разделами. Таким образом, вы дублируете код, который должен решить для вас шаблон.
  • 3
    -1: Этот очень старый пост был полностью неверным истолкованием того, как использовать преобразования веб-конфигурации. 1 Это на самом деле не ответ (просто неправильная жалоба) и 2 это не простое слияние элементов, как здесь подразумевается. Вы должны иметь явные команды замены xslt . Хорошо сделано при получении 5 голосов за то, что добавляет путаницу в этих файлах преобразования :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню