Для чего нужны файлы Web.Debug.config и Web.Release.Config?
111
Я только что обновился до Visual Studio 2010 и MVC 2.0 и заметил, что к Web.config прикреплены два дополнительных файла? Используются ли эти файлы для указания конкретных настроек отладки и выпуска, чтобы не загромождать основной файл Web.config?
Имеет ли смысл помещать строку подключения в корневой файл Web.config, если у меня есть локальный и удаленный в отладке и выпуске Web.configs соответственно?
Это новая функция преобразования Web.config в Visual Studio 2010. Подробнее здесь .
Редактировать:
Используются ли эти файлы для указания конкретных настроек отладки и выпуска, чтобы не загромождать основной файл web.config?
Это не ограничивается тремя файлами, вы можете (теоретически) иметь столько файлов, сколько у вас есть сред. Web.config «верхнего уровня» предоставляет шаблон вашей веб-конфигурации. Файлы под ним предоставляют значения замены, специфичные для этой среды (например, если у вас разные строки подключения для local / stage / test / что угодно).
Имеет ли смысл помещать строку подключения в корневой файл web.config, если у меня есть локальный и удаленный в отладке и выпуске web.configs соответственно.
Это имело бы смысл только в том случае, если бы оно не менялось между средами. Похоже, что в вашем случае это так, в вашем случае нет, не имеет смысла оставлять его в Web.config.
Эта функция наполовину готова, даже спустя 4 года! Он работает только при развертывании в Azure / публикации пакетов. Вот интересная ветка: forum.asp.net/t/1532038.aspx
Есть два способа автоматизировать процесс изменения настроек файла Web.config: преобразования Web.config и параметры веб-развертывания. Файл преобразования Web.config содержит разметку XML, которая указывает, как изменить файл Web.config при его развертывании.
Вы можете указать различные изменения для определенных конфигураций сборки и для определенных профилей публикации. Конфигурации сборки по умолчанию - это отладка и выпуск, и вы можете создавать собственные конфигурации сборки. Профиль публикации обычно соответствует целевой среде.
Если кому-то интересно, вот что я написал, чтобы иметь динамическую строку подключения для каждой среды. Я хотел развернуть код в любой среде (Dev, Test, Pre-Prod, Prod ...), не беспокоясь об изменении строк подключения. Я не мог найти хороший способ сделать это с помощью Asp.Net MVC 4, поэтому я придумал свой собственный способ полагаться на файл свойств для каждой среды.
Может быть лучшее решение, я пришел из опыта Wicket / Java и недавно начал разработку с MVC 4, поэтому, возможно, существует лучшее решение. Но вот ссылка на мой вопрос и ответ для динамической строки подключения:
В VS это давно было необходимо. К сожалению, с реализацией возникла проблема. Например, рассмотрим этот сценарий (VS.2010 Ultimate, все SP):
Web.Config
Нет раздела connectionStrings
Пользователь с полным членством / роль / и т. Д. Конфигурация провайдера с использованием connectionStringName = "test"
Web.Release.Config
Нет конфигурации членства (уже указано в основном web.config)
раздел connectionStrings, включая CS с именем "test"
Web.Debug.Config
Нет конфигурации членства (уже указано в основном web.config)
раздел connectionStrings, включая CS с именем "test"
При запуске приложение выдает следующую ошибку:
Имя подключения «test» не найдено в конфигурации приложения или строка подключения пуста.
Другими словами, поскольку элементы строки подключения находятся в файлах конструктора Release / Debug и используются элементами конфигурации в основном файле (Web.config), он не может решить эту проблему.
Чтобы быть справедливым, если у вас есть строка подключения, названная testкак в вашем файле конфигурации отладки, так и в файле конфигурации выпуска, она действительно должна быть просто в основном файле web.config с соответствующими шаблонными разделами. Как есть, вы дублируете код, и этот шаблон должен решить за вас.
R0MANARMY
3
-1: Этот очень старый пост был полностью неверным толкованием того, как использовать преобразования веб-конфигурации. 1 На самом деле это не ответ (просто неправильная жалоба) и 2 это не простое слияние элементов, как подразумевается здесь. У вас должны быть явные xsltкоманды замены. Молодцы, получили 5 голосов за что-то, что еще больше усугубляет путаницу с этими файлами трансформации :)
Это файлы преобразований Web.config. Из веб-развертывания ASP.NET с помощью Visual Studio: Преобразования файлов Web.config :
источник
Если кому-то интересно, вот что я написал, чтобы иметь динамическую строку подключения для каждой среды. Я хотел развернуть код в любой среде (Dev, Test, Pre-Prod, Prod ...), не беспокоясь об изменении строк подключения. Я не мог найти хороший способ сделать это с помощью Asp.Net MVC 4, поэтому я придумал свой собственный способ полагаться на файл свойств для каждой среды.
Может быть лучшее решение, я пришел из опыта Wicket / Java и недавно начал разработку с MVC 4, поэтому, возможно, существует лучшее решение. Но вот ссылка на мой вопрос и ответ для динамической строки подключения:
Строка динамического подключения asp.net MVC 4
источник
В VS это давно было необходимо. К сожалению, с реализацией возникла проблема. Например, рассмотрим этот сценарий (VS.2010 Ultimate, все SP):
Web.Config
Web.Release.Config
Web.Debug.Config
При запуске приложение выдает следующую ошибку:
Другими словами, поскольку элементы строки подключения находятся в файлах конструктора Release / Debug и используются элементами конфигурации в основном файле (Web.config), он не может решить эту проблему.
источник
test
как в вашем файле конфигурации отладки, так и в файле конфигурации выпуска, она действительно должна быть просто в основном файле web.config с соответствующими шаблонными разделами. Как есть, вы дублируете код, и этот шаблон должен решить за вас.xslt
команды замены. Молодцы, получили 5 голосов за что-то, что еще больше усугубляет путаницу с этими файлами трансформации :)