Преобразование web.config не применяется ни к установочному пакету публикации, ни к сборке - PullRequest
13 голосов
/ 16 июня 2010

Сегодня я начал играть с преобразованиями web.config в VS 2010. Для начала я попробовал тот же самый пример hello world, о котором говорится во многих сообщениях в блоге на эту тему - обновление строки подключения.

Я создал минимальный пример, показанный ниже (и похож на тот, который можно найти в этом блоге ).Проблема заключается в том, что всякий раз, когда я делаю щелчок правой кнопкой мыши -> «Опубликовать» или щелчком правой кнопкой мыши -> «Создать пакет развертывания» в файле .csproj, я не получаю правильный вывод.Вместо преобразованного web.config я получаю no 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>

Ответы [ 4 ]

23 голосов
/ 01 июля 2010

Неизбежно с этими вещами, ответ на самом деле смотрел мне в лицо.Наличие xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0" в узле <configuration> файла web.config означало, что мои преобразования не совпадали.Устранение проблемы решило проблему.

2 голосов
/ 09 января 2018

У меня сработало это:

(1) меню Build - Configuration Manager

(2) выбрать активное решение в моем случае Опубликовать и настроить его правильно (я там выбрал Debug, следовательно, нетприменены преобразования из Publish)

2 голосов
/ 24 мая 2013

В ваших файлах 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">

...

1 голос
/ 19 октября 2017

У меня была похожая проблема, и это было связано с тем, что для моих сред были настроены конфигурации решений, но я никогда не создавал конфигурации проектов, которые бы соответствовали конфигурациям решений.

Для проверки:

  1. В разделе «Построение» -> «Конфигурация решения»
  2. Измените «Активную конфигурацию решения» и убедитесь, что конфигурации вашего проекта совпадают с именами файлов конфигурации.
...