2017-02-16 3 views
4

Попытка получить простой <appSettings> для dev против prod.appSettings в Web.config и Web.Release.config

Мои Web.config:

<appSettings> 
    <add key="hello" value="debug" /> 
</appSettings> 

Мои Web.Release.config:

<appSettings> 
    <add key="hello" value="prod" /> 
</appSettings> 

(оба под <configuration>)

Когда я его в режиме отладки и запустить свой сайт MVC, что я могу сделать простой return Content(WebConfigurationManager.AppSettings["hello"]); в моем HomeController.Index и он возвращает dev. Если я переключу режим на Release, он все равно возвращает dev. Я бы хотел симулировать режим prod без фактического публикации в prod.

+0

Нет никакого хорошего способа сделать это, и есть очень сильный аргумент, что вы действительно не должны этого делать. В конечном счете, IIS будет смотреть только на файл с именем 'web.config', поэтому вы можете использовать этот файл. Вы можете просмотреть преобразованный файл и скопировать/вставить его, конечно, помните, что нужно отменить его после того, как вы его протестировали. – DavidG

ответ

11

В файле Web.config, специфичном для сборки, вы должны сообщить ему, как преобразовать базовый файл .config. Таким образом, чтобы делать то, что вы спрашиваете, ваш файл Web.Release.config должен выглядеть следующим образом:

<appSettings> 
    <add key="hello" value="prod" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" /> 
</appSettings> 

В приведенном выше коде SetAttributes преобразования изменит атрибуты любого элемента, удовлетворяющего атрибут key, содержащий значение hello.

+0

Это должен быть принятый ответ. – Nikkelmann

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