2011-12-27 3 views
5

У меня есть веб-приложение в VS2010 с web.config, как это:Web.Debug.config не обрабатывает замещения

... 
<configuration> 
    <connectionStrings> 
    <add name="ApplicationServices" 
     connectionString="data source=MyProdDb;Initial Catalog=MyCat;User Id=MyUser;Password=MyPass;" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
... 

и Web.Debug.config вроде этого:

... 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <connectionStrings> 
     <add name="ApplicationServices" 
      connectionString="data source=MyDevDb;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
      xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> 
    </connectionStrings> 
... 

Проект настроен на создание сборки Debug, и когда я запускаю его в отладчике, я получаю MyProdDb, а не MyDevDb

Что мне не хватает?

+0

Вы публикуете этот веб-сайт, или вы строго говорите, компилируетесь и запускаете? –

+0

Это потому, что у вас есть «MyProdDb» на вашем web.config ??!? –

+3

К сожалению, отладчик этого не делает. – SLaks

ответ

2

Как говорят люди, версии web.config применяются только к публикации (MSDeploy). Обычный способ, которым вы будете делать, - это настроить «Debug» в фактическом файле web.config и внести изменения в это для каждого из сценариев развертывания, которые у вас есть.

+0

Спасибо, я сделаю это, и это решает проблему. Заставляет меня задаться вопросом, что такое Web.Debug.config, поскольку Web.Release.config является единственным, используемым в этом рабочем процессе. Я не видел установки, где можно было бы публиковать параметры отладки с dev-компьютера на внешний сервер (я думаю, это можно было бы использовать для публикации в QA, но я этого не видел). –

+0

Действительно, причина, по которой вы можете получить мультипликаторы, - это один из следующих сценариев. У вас есть несколько сред развертывания (Test, Acceptance, Production), вам нужно развернуть «отладочную» версию в другую среду для диагностики проблемы (prefox debug означает, что вы у вас есть пользовательские ошибки или что-то в этом роде) –

+0

Это не так, с обновлением команды Скотта Хансельмана. См. Мой дополнительный ответ. –

3

Что мне не хватает?

Вам не хватает того факта, что преобразование web.config происходит только при развертывании. Если вы не публикуете свое веб-приложение, вы не можете ожидать каких-либо преобразований. Если вы просто запустили свой сайт локально, нажав F5 никаких преобразований не произойдет. Только при публикации приложения выполняется преобразование.

+0

OK Я понимаю ... хотя я должен сказать, что это кажется очень неудачным выбором дизайна. –

+0

FYI, больше неправда (с добавлением команды Скотта Хансельмана). См. Мой новый ответ. –

0

Преобразование Web.config обрабатывается только во время публикации. При отладке (даже в режиме выпуска) используется основной файл Web.config.

4

ОБНОВЛЕНО ИНФОРМАЦИЯ

Произвольные XML на основе .config файлы теперь могут быть обработаны, и обработка может произойти во время сборки, а не во время развертывания

http://www.hanselman.com/blog/SlowCheetahWebconfigTransformationSyntaxNowGeneralizedForAnyXMLConfigurationFile.aspx

Блестяще, трансформанты также можно просмотреть непосредственно в Visual Studio.