如何使用配置转换删除ConnectionString

时间:2012-01-19 02:50:04

标签: c# .net visual-studio web-config web-config-transform

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

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

有没有办法使用配置转换来删除特定的连接字符串?喜欢的东西:

<connectionStrings>
    <xdt:Remove connStr2?

显然没有接近正确语法的地方,但是你得到了我的漂移......

2 个答案:

答案 0 :(得分:99)

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

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

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

答案 1 :(得分:63)

来自主题的MSDN documentation

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

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

修改

第二个想法,您也可以将Locator attribute与上面定义的Remove结合起来,以限制您真正要删除的元素。

更明确地说:

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

或类似的应该有效。