用msdeploy参数替换web config * elements *

时间:2010-07-15 16:52:00

标签: web-config msdeploy

我们正在使用msdeploy(或Web部署,如果您愿意)打包和部署Web应用程序。通过声明参数包时间,我们可以在部署时提供值(以替换连接字符串等)。

我们目前面临的问题是替换我们的网络配置中的applicationSettings部分中的值。我们不能让msdeploy替换值,因为我们要替换的内容是xml元素内的文本,而不是属性值(我们得到的警告是:“无法在节点类型'Element'上设置值”)。

相关配置如下所示:

<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 个答案:

答案 0 :(得分:43)

为后人......

您只需在比赛结束时添加“/ text()”即可。这将改变标签所包含的值。但是,此值在web.config中不能为空。因此,当您使用“Release”解决方案配置构建部署包时,web.Release.config不得将此设置值设置为空值。

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