如何转换此web.config部分?

19

我有以下的邮件配置:

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

这是我的.Release版本:

<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个回答

24
对于 specifiedPickupDirectory 元素,这将起作用:<specifiedPickupDirectory xdt:Transform="RemoveAll" />
对于 System.Diagnostics: <system.diagnostics xdt:Transform="RemoveAll"></system.diagnostics>

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>

这将替换那个标签为你自己的标签...希望这是你要找的...

最好的一点是,通过这种方式,您不会在转换配置中添加不必要的删除命令,就像一些回答在这里所述的那样。

考虑一个情况,即您有多个子标签。


我已经尝试并测试过这个方法,并且经常用它来进行转换。 - Baz1nga
我更喜欢自己替换整个部分,特别是如果以后需要修改你没有考虑到的元素。 - Eugene S.

1

与其试图从您的发布版本中删除配置,不如从基本版本获取它,然后将其添加到 .Debug 版本中,这可能更简单。但是,如果您想要删除它,我认为您可以使用 <specifiedPickupDirectory xdt:Transform="Remove"/> 或类似的内容。


不确定为什么人们会对这个建议投反对票,我会点赞它。在我的情况下,调试是我的测试服务器,发布是生产服务器。我正在使用基础版本进行开发。 - katit
6
好的回答(+1)。但应指出,当 Web 应用程序在 Visual Studio 中执行时,它不会执行配置转换。这意味着我们必须将相当数量的内容留在常规 web.config 文件中,这些内容必须被删除。变换只会在发布网站时发生。如果您仅通过发布到本地 IIS 服务器或远程开发服务器进行测试,则可能不存在此问题。 - NotMe

-4
@katit,你应该为开发和发布维护两个不同的配置文件。
你的Web配置文件应该是动态的,并按照以下方式获取配置文件。
/qa/yoursettings.config


/release/yoursettings.config

再来一个样例

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

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

这样会更加清晰简洁。


我喜欢VS2010为我转换和发布web.config的方式。因此问题是,我正在进行许多其他转换,这比手动拥有不同的配置并发布它们要容易得多。 - katit
2
-1:他明确询问的是 Visual Studio 2010 的一个功能,即 web.config 转换。 - John Saunders
3
我同意John的观点。他在问有关配置转换的问题,而你的代码是我们拥有这种功能之前的产物。 - NotMe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接