使用动态参数进行 Web 部署 XML 文件参数化

本文关键字:参数 XML 部署 文件 Web 动态 | 更新日期: 2023-09-27 18:32:13

我试图使用参数.xml进行C#Web项目的Web部署。 如果所有参数都是预定义的,则工作正常。 但是,在我的情况下,需要配置一组相同类型的项目,并且组中的项目数因不同站点而异。

例如,我在 web.config 中有一组项目,如下所示:

  <ItemConfiguration>
    <items>
      <item name="item1" label="1"  />
      <item name="item2" label="2"  />
      <item name="item3" label="3"  />       
    </items>
  </ItemConfiguration>

我的参数.xml看起来像:

  <parameter name="item1" defaultValue="&lt;item name='name' label='label' /&gt;">
    <parameterEntry kind="XmlFile" scope="obj''Release''Package''PackageTmp''web'.config$"
      match="/configuration/itemConfiguration/items" />
  </parameter>
  <parameter name="item2" defaultValue="&lt;item name='name' label='label' /&gt;">
    <parameterEntry kind="XmlFile" scope="obj''Release''Package''PackageTmp''web'.config$"
      match="/configuration/itemConfiguration/items" />
  </parameter>
  <parameter name="item3" defaultValue="&lt;item name='name' label='label' /&gt;">
    <parameterEntry kind="XmlFile" scope="obj''Release''Package''PackageTmp''web'.config$"
      match="/configuration/itemConfiguration/items" />
  </parameter>

和我的设置参数.xml用于其中一个部署站点:

<?xml version="1.0" encoding="utf-8"?>
<parameters>
  ...
  <setParameter name="item1" value="&lt;item name='book1' label='book 1'  /&gt;" />
  <setParameter name="item2" value="&lt;item name='book2' label='book 2'  /&gt;  " />
  <setParameter name="item3" value="&lt;  /&gt;" />
</parameters>

上面的配置允许我设置2个项目进行部署。我的问题是,如果我需要配置的不仅仅是参数.xml中定义的项目,比如我想拥有 book1、book2、book3 和 book4,那么我该怎么做?另一个站点可能需要在组中配置 10 个项目。

在部署参数时.xml不能再更改了,只有 SetParameters.xml允许更改,所以我想知道我是否以错误的方式执行此操作或存在限制。

谢谢

使用动态参数进行 Web 部署 XML 文件参数化

也许不是您所期望的答案,因为它不直接处理参数,但我会用另一种更简单、更灵活的方法解决这个问题,恕我直言:

网络.config

<ItemConfiguration>
    <items>
        <!-- this section to be defined by the environment config -->
    </items>
</ItemConfiguration>

web.test.config

<ItemConfiguration>
    <items>
        <item name="item1" label="1"  xdt:Transform="Insert"/>
        <item name="item2" label="2"  xdt:Transform="Insert"/>     
    </items>
</ItemConfiguration>

web.integration.config

<ItemConfiguration>
    <items>
        <item name="item1" label="1"  xdt:Transform="Insert"/>
        <item name="item4" label="4"  xdt:Transform="Insert"/>
        <item name="item5" label="5"  xdt:Transform="Insert"/>   
        <item name="item6" label="6"  xdt:Transform="Insert"/>        
    </items>
</ItemConfiguration>

web.production.config

<ItemConfiguration>
    <items>
        <item name="item1" label="1"  xdt:Transform="Insert"/>
        <item name="item2" label="2"  xdt:Transform="Insert"/>
        <item name="item3" label="3"  xdt:Transform="Insert"/>       
    </items>
</ItemConfiguration>

另外不要忘记将定义包含在配置文件中:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
...
</configuration>