首页 > 解决方案 > 从配置文件中删除数组字符串项

问题描述

如何从配置文件中删除字符串数组项?

<configuration>
  <applicationSettings>
    <Sample.Service.Properties.Settings>
      <setting name="SampleAttribute" serializeAs="Xml">
        <value>
          <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <string>firstemail@domain.com</string>
            <string>secondemail@domain.com</string>
          </ArrayOfString>
        </value>

我可以从配置文件中访问第一项(firstemail@domain.com),并且可以用以下代码替换该值。但我的问题是如何通过以下类似代码从配置文件中删除第二项(secondemail@domain.com)。

    {
"configuration/applicationSettings/Sample.Service.Properties.Settings/setting[@name='SampleAttribute']/value/ArrayOfString/string[0]":"$(SampleAttribute)"
}

标签: azurepowershellazure-devopsazure-pipelinesazure-pipelines-release-pipeline

解决方案


从配置文件中删除数组字符串项

恐怕我们无法使用文件转换(不确定Config Transform您说的是file Transform还是Config Transformation)来删除数组字符串项。

要解决此问题,您可以使用任务Replace Tokens替换第一项并删除第二项:

配置文件中变量的格式是#{EmailOne}#& #{EmailTwo}#

我的测试配置文件如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <applicationSettings>
    <Sample.Service.Properties.Settings>
      <setting name="SampleAttribute" serializeAs="Xml">
        <value>
          <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <string>#{EmailOne}#</string>
            #{EmailTwo}#
          </ArrayOfString>
        </value>
      </setting>
    </Sample.Service.Properties.Settings>
  </applicationSettings>
</configuration>

然后我们只需要在变量中定义变量 EmailOne 和 EmailTwo 为替换值和值:

在此处输入图像描述

测试结果:

在此处输入图像描述

内联 Powershell 脚本:

$appConfigFile = "$(System.DefaultWorkingDirectory)\xxx\xxx\web.config" #change the path to your config file.

$appConfig = New-Object XML
$appConfig.Load($appConfigFile)
foreach($BuildNumber in $appConfig.configuration.applicationSettings."Sample.Service.Properties.Settings".setting.value.ArrayOfString)
{

$BuildNumber.RemoveChild($BuildNumber.FirstChild.NextSibling)


}
$appConfig.Save($appConfigFile)

推荐阅读