Здесь неплохо обсуждается изменение настроек web.config:
Использование различных Web.config в среде разработки и производства
Примечание: вы задаете другой вопрос, но я все равно предлагаю взглянуть на него, потому что это потрясающая коллекция предложений о том, как переключаться между живыми и отладочными настройками, и все ответы (IMO) имеют определенную ценность - не только самый высокий / принятый ответ.
Лично , я использую метод, описанный здесь, и думаю, что он является наиболее гибким и применим ко всем типам изменений конфигурации, поскольку он основан на файлах, но позволяет автоматически заменять их в зависимости от конфигурации решения. :
http://www.hanselman.com/blog/ManagingMultipleConfigurationFileEnvironmentsWithPreBuildEvents.aspx
По сути, вы запускаете событие перед сборкой, чтобы заменить веб-конфигурацию другим на диске с именем конфигурации решения, добавленным к имени файла. Например, у меня есть web.config.release, web.config.debug и даже web.config.neilathome.
Затем я использую те же самые методы для условных битов кода, создавая частичные классы и помещая материал, который изменяется между конфигурациями моего решения, в свои собственные файлы. Например, у меня есть sync_timersettings.cs, который является частичным классом, содержащим несколько констант, которые определяют, как часто мой код обновления вызывает веб-сервис. Или вы можете просто поместить все свои настройки в файл app.settings и сделать это таким образом.
Я считаю, что это очень гибкое решение, оно позволяет мне обменивать фрагменты javascript и css, и, если вы потратите время, чтобы поместить вещи, которые меняются между конфигурациями, в свои собственные файлы, вы, вероятно, можете перейти в состояние, когда вы можно выполнить отладку в конфигурации решения отладки, а затем переключиться на выпуск и развертывание в один клик.
Еще одно примечание:
#if DEBUG
pnlDebugIncludes.visible = true
#else
pnlReleaseIncludes.visible = true
#endif
Ответы на комментарии:
Это полезно только в том случае, если у вас есть конфигурация решения отладки и еще одна конфигурация, предназначенная для развертывания в реальном времени. Он не будет работать, когда у вас (как и у меня) есть конфигурация промежуточного решения, выпуска и neilonhislaptop, поскольку символ DEBUG устанавливается только при включенной отладке. Обходной путь - перейти на страницу свойств вашего веб-приложения и на вкладке сборки добавить условный символ для каждой конфигурации вашей сборки. IE, настройте сборку на выпуск и поместите 'release' в поле условного обозначения на этой вкладке. Затем сделайте то же самое для разных конфигураций сборки, поле условного обозначения там автоматически изменится в зависимости от вашей конфигурации сборки. # если директивы условной компиляции будут работать как положено.
Байард запросил дополнительную информацию о том, как использовать это для изменения разметки между конфигурациями. Ну, вы могли бы использовать, чтобы поменять всю страницу .aspx - есть home.aspx.release и home.aspx.debug, но это означало бы, что вам пришлось бы повторять много разметки в каждом файле. Мое решение состоит в том, чтобы добавить частичный класс в мое приложение. Например, моя страница ViewImage содержит следующее определение класса:
public partial class ViewImage : System.Web.UI.Page
.. поэтому я создал несколько файлов классов с одинаковой подписью и назвал их «ViewImage_titleset.cs.debug» и «ViewImage_titleset.cs.staging»:
namespace Website
{
public partial class ViewImage : System.Web.UI.Page
{
public void SetTitle()
{
Page.Title = "Running in debug mode";
}
}
}
и
namespace Website
{
public partial class ViewImage : System.Web.UI.Page
{
public void SetTitle()
{
Page.Title = "Running in staging mode";
}
}
}
.. вызов SetTitle в событии загрузки страницы для ViewImage изменит заголовок в зависимости от конфигурации сборки. Это будет работать, только если вы изменяете страницу программным способом.
Лучше использовать метод условной компиляции, описанный выше, для изменения кода, подобного этому, и зарезервировать метод file-swap для замены не кодовых файлов, таких как images или web.configs. Просто убедитесь, что вы не установили альтернативные файлы для развертывания при публикации.