80

我有一个带有几个 ConnectionStrings 的 Web.config

<connectionStrings>
    <add name="connStr1" connectionString="...
    <add name="ConnStr2" connectionString="...
    <add name="connStr3" connectionString="...

有没有办法使用配置转换来删除特定的连接字符串?就像是:

<connectionStrings>
    <xdt:Remove connStr2?

显然没有正确的语法,但你明白我的意思......

4

2 回答 2

120

这将根据其名称删除特定的连接字符串。

<configuration>
  <connectionStrings> 
    <add name="ConnStr2" xdt:Transform="Remove" xdt:Locator="Match(name)" connectionString=" " /> 
  </connectionStrings> 
</configuration>

请注意,该connectionString值不是空字符串,而是一个空格。任何非空值都可以。

于 2012-01-30T11:45:09.437 回答
85

来自有关该主题的MSDN 文档

<configuration xmlns:xdt="...">
  <connectionStrings>
    <add xdt:Transform="Remove" />
  </connectionStrings>
</configuration>

Transform="Remove"是你正在寻找的魔法。还有一个Transform="RemoveAll"您可以与特定添加一起使用的。

编辑

再三考虑,您也可以将Locator属性Remove上面定义的属性结合起来,以限制您实际要删除的元素。

更明确地说:

<configuration xmlns:xdt="...">
  <connectionStrings>
    <add xdt:Transform="Remove" xdt:Locator="XPath(configuration/connectionStrings[@name='ConnStr2'])" />
  </connectionStrings>
</configuration>

或类似的应该工作。

于 2012-01-19T03:14:25.280 回答