Замените элементы веб-конфигурации * с параметрами msdeploy - PullRequest
20 голосов
/ 15 июля 2010

Мы используем msdeploy (или веб-развертывание, если хотите) для упаковки и развертывания веб-приложений. Объявляя время пакета параметров, мы можем предоставить значения во время развертывания (для замены строк соединения среди прочего).

Проблема, с которой мы сейчас сталкиваемся, заключается в замене значений в разделах applicationSettings в нашей веб-конфигурации. Мы не можем заставить msdeploy заменить значение, потому что содержимое, которое мы хотим заменить, это текст внутри элемента xml, а не значение атрибута (мы получаем предупреждение: «Невозможно установить значение для типа узла« Элемент »»).

Соответствующий конфиг выглядит так:

<applicationSettings>
  <Name.Of.Assembly.Properties.Settings>
    <setting name="someSetting" serializeAs="String">
      <value>I wanna be replaced</value>
    </setting>
  </Name.Of.Assembly.Properties.Settings>
</applicationSettings>

и параметр объявления XML выглядит следующим образом:

<parameter name="XX" defaultValue="default">
  <parameterEntry kind="XmlFile"
                       scope="Web\.config$"
                       match="/configuration/applicationSettings/Name.Of.Assembly.Properties.Settings/setting[@name='someSetting']/value" />
</parameter>

Поддерживает ли msdeploy только замену значений атрибутов или я что-то не так делаю?

1 Ответ

43 голосов
/ 22 декабря 2010

Для потомков ...

Вам просто нужно добавить "/ text ()" в конце матча.Это изменит значение, заключенное в теги.Однако это значение не может быть пустым в исходном файле web.config.Поэтому при создании пакета развертывания с использованием конфигурации решения «Release» web.Release.config не должен устанавливать для этого значения параметра пустое значение.

...