Преобразования web.config не применяются ни к установке публикации, ни к установке
Сегодня я начал играть с преобразованиями web.config
в VS 2010. Для начала я попытался использовать тот же самый пример hello world, который содержит множество сообщений в блоге в этом разделе - обновление строки подключения.
Я создал минимальный пример, показанный ниже (и аналогичный тому, который был найден в в этом блоге). Проблема в том, что всякий раз, когда я делаю щелчок правой кнопкой мыши → "Опубликовать" или щелкните правой кнопкой мыши → "Построить пакет развертывания" в файле .csproj, я не получаю правильный вывод. Вместо преобразованного web.config, я получаю нет web.config, и вместо этого два файла преобразования включены.
Что я делаю неправильно? Любая помощь с благодарностью получила!
Web.config:
<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<connectionStrings>
<add name="ConnectionString"
connectionString="server=(local); initial catalog=myDB;
user=xxxx;password=xxxx" providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
Web.debug.config:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add name="ConnectionString"
connectionString="server=DebugServer; initial catalog=myDB;
user=xxxx;password=xxxx"
providerName="System.Data.SqlClient"
xdt:Transform="SetAttributes"
xdt:Locator="Match(name)"/>
</connectionStrings>
</configuration>
Web.release.config:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add name="ConnectionString"
connectionString="server=ReleaseServer; initial catalog=myDB;
user=xxxx;password=xxxx"
providerName="System.Data.SqlClient"
xdt:Transform="SetAttributes"
xdt:Locator="Match(name)"/>
</connectionStrings>
</configuration>
Ответы
Ответ 1
Неизбежно с этими вещами, ответ действительно смотрел мне в лицо. Наличие xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"
в <configuration>
node файла web.config означает, что мои преобразования не совпадали. Удаление этого решения проблемы.
Ответ 2
В файлах web.release.config и web.debug.config добавьте одно и то же пространство имен к вашему преобразованию, ala
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
...
Ответ 3
У меня была аналогичная проблема, и исправление было связано с тем, что у меня были конфигурации решений, настроенные для моих сред, но я никогда не создавал конфигурации проектов, которые бы соответствовали конфигурациям решений.
Проверить:
- В разделе "Создать" → "Конфигурация решения"
- Измените свой "активный"
конфигурации решения "и убедитесь, что ваши конфигурации проекта
line в соответствии с конфигурационными файлами, которые вы назвали.
Ответ 4
Для меня это работало:
(1) menu Build - Configuration Manager
(2) выберите активное решение в моем случае. Публикуйте и настройте его правильно (я там выбрал Debug, поэтому никаких преобразований из Publish не было применено)