我们正在使用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只支持替换属性值还是我做错了什么?
答案 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>