2010-01-26 2 views
1

Есть ли у кого-нибудь хорошие методы для простого переключения между разработкой и живыми сборками для веб-сайтов asp.net mvc? Каждый раз, когда я вношу какие-то изменения, мне нужно перейти на мой web.config и прокомментировать все мои местные вещи и раскомментировать все мои удаленные настройки. Мне также нужно обновить файл dbml linq-to-sql, чтобы указать на правильную строку соединения.Переключение между версией разработки и текущей версией

Это происходит каждый раз, когда я вношу изменения в контроллер. После того, как я загружу изменения, я должен выполнить тот же процесс и вернуть его в режим разработки (локальный).

Есть ли автоматический способ справиться с этим или, по крайней мере, один параметр, который может обозначать между двумя?

Благодаря

+0

вы рассмотрели имеющие процесс сборки, который развертывается обе версии? –

+0

Вы используете MSI или xcopy для выпуска? Я предполагаю, что вы можете иметь два разных конфигурационных файла: web.config и production_web.config. Просто свопите конфигурации во время выпуска. –

+0

Как использовать msi или xcopy? Я использую visual studio 2008 web express. – chobo

ответ

1

способ я сделал это, чтобы сделать две группы настроек конфигурации

<LiveSomeSetting>something</LiveSomeSetting> 
<TestSomeSetting>anotherthing</TestSomeSetting> 

Тогда в моем классе, который читает информацию о конфигурации, я бы проверить на что-то вроде системной среды/имя компьютера и, если применимо, к имени вашей машины LIVE, посмотрите настройки ... в противном случае это будет разработка.

if (System.Environment.MachineName.ToLower().StartsWith("devMachineName")) 
    IsLive = "Test"; 
else 
    IsLive = "Live"; 

Application["IsLive"] = IsLive; 
SomeSetting = ConfigurationManager.AppSettings[IsLive + "SomeSetting"]; 
+0

Как и когда вы ссылаетесь на этот класс? Это из global.asa? – chobo

+0

yes .. from Global.asax во время запуска приложения. Я просматриваю параметры конфигурации и сохраняю в «глобальную» переменную, но я уверен, что вы можете хранить их в другом месте или в другом объекте в вашем приложении. – DRapp

+0

Есть ли риск безопасности при наличии глобальных переменных? Может ли кто-то захватить строки подключения, а что нет? – chobo

0

Я использую простую технику, которую Scott Hanselman написал в блоге в '97. В основном это касается поддержки отдельных файлов web.config для каждого из ваших типов сборки. Затем происходит событие предварительной сборки, которое копирует правильный web.config на место.

У него есть нижняя сторона, чтобы поддерживать 2+ файлы web.config, но как только вы запустите и запущен, это не так уж и важно.

Посмотрите здесь, в статье:
Managing Multiple Configuration File Environments with Pre-Build Events

HTHS,
Чарльз

Смежные вопросы