将 Web 配置 *elements* 替换为 msdeploy 参数

2024-01-05

我们使用 msdeploy(如果您愿意,也可以使用 web 部署)来打包和部署 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 只支持替换属性值还是我做错了什么?


为了后代...

您只需在比赛末尾添加“/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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Web 配置 *elements* 替换为 msdeploy 参数 的相关文章

随机推荐