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

时间:2016-01-27 05:15:18

标签: c# .net web-deployment

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

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

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

我的 Parameters.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>
其中一个部署站点的

和我的 SetParameters.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个项目进行部署。 我的问题是,如果我需要配置的次数多于在parameters.xml中定义的项目,那么我想要book1,book2,book3和book4,那么我该怎么做呢?另一个站点可能需要在该组中配置10个项目。

并且在部署Parameters.xml时不能再进行更改,只有SetParameters.xml允许更改,所以我想知道我是以错误的方式进行更改还是存在限制。

感谢

1 个答案:

答案 0 :(得分:0)

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

的web.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>