Преобразования 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 не было применено)