21

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

4

1 回答 1

44

为后人...

您只需要在匹配的末尾添加“/text()”。这将改变标签所包含的值。但是,该值在源 web.config 中不能为空。因此,当您使用“发布”解决方案配置构建部署包时,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>
于 2010-12-22T05:19:18.690 回答