Как изменить параметр web.config с помощью синтаксиса преобразования?
У меня есть значение, хранящееся в моем файле web.config, который я хотел бы изменить, когда сайт будет опубликован. Я хочу изменить его с TEST на LIVE.
<appSettings>
<add key="RequestMode" value="TEST" />
// other keys here
</appSettings>
Возможно ли это с использованием синтаксиса преобразования web.config? Если да, то как?
Спасибо.
Ответы
Ответ 1
Да, это возможно с синтаксисом преобразования. Это преобразование должно сделать трюк:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<appSettings>
<add key="RequestMode" value="LIVE" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
</appSettings>
</configuration>
Ответ 2
Это возможно из коробки с помощью Visual Studio 2010. Единственное предупреждение - этот процесс выполняется из Visual Studio, когда вы используете объекты публикации в нем. Вы не сможете получить это преобразование из MSBuild (что затрудняет автоматическую сборку).
<appSettings xdt:Transform="Replace"> <add key="ProdKeyA" value="ProdValA"/> <add key="ProdKeyB" value="ProdValB"/> <add key="ProdKeyC" value="ProdValC"/></appSettings>
Источник: Преобразование Web.Config VS 2010
Также убедитесь, что ваш файл трансакций Web.Config.XXXX соответствует определению вашей сборки. Например, debug и release поддерживаются по умолчанию, поэтому вам нужно будет иметь Web.Config.Release, чтобы настроить Web.Config при публикации в режиме выпуска.
Ответ 3
Я нашел код ниже в http://mundrisoft.com/tech-bytes/web-config-transformation-for-project-deployment/, который работал:
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add name="MyDB"
connectionString="ReleaseSQLServer"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
</configuration
Ответ 4
Вы также можете использовать инструмент CTT для выполнения веб-преобразования Веб-сайт CTT
Затем вы можете опубликовать свои файлы, прежде чем развертывание с помощью powershell может преобразовать веб-конфигурацию (сохранение файла преобразования), а затем просто изменить имя во время развертывания