Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从DevOps更改多个XML元素内容_C#_Xml_Asp.net Mvc_Azure_Azure Pipelines - Fatal编程技术网

C# 如何从DevOps更改多个XML元素内容

C# 如何从DevOps更改多个XML元素内容,c#,xml,asp.net-mvc,azure,azure-pipelines,C#,Xml,Asp.net Mvc,Azure,Azure Pipelines,我有一个web.config文件,其中包含以下元素: <client> <endpoint address="url_1" /> <endpoint address="url_2" /> <endpoint address="url_3" /> </client> 现在,我想根据部署到的环境对其进行更改。我已经创建了一个发布管道,部署到Azure上的开发和产品环境中

我有一个web.config文件,其中包含以下元素:

<client>
 <endpoint address="url_1" />
 <endpoint address="url_2" />
 <endpoint address="url_3" />
</client>

现在,我想根据部署到的环境对其进行更改。我已经创建了一个发布管道,部署到Azure上的开发和产品环境中,我正在使用它来更改我需要的任何变量,例如产品环境中的connectionString

我还想在PROD环境中更改web.config文件中的3个端点元素内容

例如,在各自的环境中应该是这样的:

开发人员:

产品:

我调查过了,我不想添加到文件中。我想删除
url\u 1、url\u 2、url\u 3
并将它们替换为
url\u 4、url\u 5、url\u 6

发布管道上有没有一种方法可以在不破坏我添加的变量替换的情况下完成这项任务?

您可以使用它来实现这一点。请注意,您必须将这些变量值保存在管道/变量组中。例如:
url1
的值将是
url\u 1
作用域到开发阶段

XML文件设置:

<client>
 <endpoint address="#{url1}#" />
 <endpoint address="#{url2}#" />
 <endpoint address="#{url3}#" />
</client>
<client>
 <endpoint address="url_1" />
 <endpoint address="url_2" />
 <endpoint address="url_3" />
</client>
<client>
 <endpoint address="url_4" />
 <endpoint address="url_5" />
 <endpoint address="url_6" />
</client>

结果: 开发人员:

<client>
 <endpoint address="#{url1}#" />
 <endpoint address="#{url2}#" />
 <endpoint address="#{url3}#" />
</client>
<client>
 <endpoint address="url_1" />
 <endpoint address="url_2" />
 <endpoint address="url_3" />
</client>
<client>
 <endpoint address="url_4" />
 <endpoint address="url_5" />
 <endpoint address="url_6" />
</client>

产品:

<client>
 <endpoint address="#{url1}#" />
 <endpoint address="#{url2}#" />
 <endpoint address="#{url3}#" />
</client>
<client>
 <endpoint address="url_1" />
 <endpoint address="url_2" />
 <endpoint address="url_3" />
</client>
<client>
 <endpoint address="url_4" />
 <endpoint address="url_5" />
 <endpoint address="url_6" />
</client>

根据您的描述,如果您想在运行管道期间更改多个XML元素的内容,我建议您使用扩展任务魔术块。此任务可以在生成过程中转换配置文件

您可以将的任务安装到组织中,然后将其添加到管道中。它使用以下magic chunk任务的示例设置测试了您的web.config:

关于参数路径转换:您需要指定自己的配置文件路径和所需的转换

下面是我的测试,你可以参考一下:

管道成功运行后,我们检查工件文件,发现配置文件中的元素已更改。

如何使用魔法块更改多行?我是否可以添加一个JSON配置行,在其中以某种方式将其与name属性匹配,并更改address属性值?您可以使用魔术块更改多行。例如:{“key1”:“value1”,“key2”:“value2”}Magic Chunks是一个易于使用的工具,用于配置JSON、XML和YAML的转换。