如何转换这个web.config部分?

时间:2011-08-23 19:23:52

标签: c# asp.net web-config

我的邮件配置如下:

<system.net>
    <mailSettings>
      <smtp from="foo@bar.com" deliveryMethod="SpecifiedPickupDirectory">
        <specifiedPickupDirectory pickupDirectoryLocation="C:/test"/>
        <network host="localhost" userName="" password=""/>
      </smtp>
    </mailSettings>
  </system.net>

这是我的。发布版本:

<system.net>
    <mailSettings>
      <smtp from="foo@bar.com" xdt:Transform="RemoveAttributes(deliveryMethod)">
        <network xdt:Transform="Replace" host="192.168.1.9" userName="" password="" />
      </smtp>
    </mailSettings>
  </system.net>

如何删除

<specifiedPickupDirectory pickupDirectoryLocation="C:/test"/>

所以它根本没有显示在我的.Release中?

另外,我想完全删除System.Diagnostics之类的其他命名空间。这样做的语法是什么?

4 个答案:

答案 0 :(得分:24)

对于specifiedPickupDirectory元素,这应该有效:

<specifiedPickupDirectory xdt:Transform="RemoveAll" />

对于System.Diagnostics:

<system.diagnostics xdt:Transform="RemoveAll"></system.diagnostics>

答案 1 :(得分:16)

<system.net>
    <mailSettings>
      <smtp from="foo@bar.com" xdt:Transform="Replace">
        <network xdt:Transform="Replace" host="192.168.1.9" userName="" password="" />
      </smtp>
    </mailSettings>
  </system.net>

这会用你的标签取代整个标签..希望这就是你要找的......

关于这一点的好处是你最终会用不必要的删除命令来污染你的转换配置,比如这里说的一些答案。

考虑你有多个子标签的情况..

答案 2 :(得分:1)

您是否可以从基础版本中删除配置,而不是尝试从发布版本中删除配置,只需将其添加到.Debug版本中?这可能更简单。但是,如果您想删除它,我认为您可以使用<specifiedPickupDirectory xdt:Transform="Remove"/>或类似的东西。

答案 3 :(得分:-4)

@katit,你应该为dev和release维护两个不同的配置。

你的webconfig应该是动态的,并采取如下配置

/qa/yoursettings.config


/release/yoursettings.config

又一个样本

<connectionStrings configSource="config\qa\connectionStrings.config"/>

当你去qa或发布时,相应地切换你的web.config。

通过这种方式它会更加清洁。