How to remove a ConnectionString using Config Transformations

53,047

Solution 1

From the MSDN documentation on the subject:

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

The Transform="Remove" is the magic you're looking for. There is also a Transform="RemoveAll" which you might be able to use in conjunction with a specific add(s).

EDIT

On second thought you may also be able to combine the Locator attribute with the Remove defined above to limit which elements you actually want to delete.

More definitively:

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

Or similar should work.

Solution 2

This will remove a specific connection string based on its name.

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

Note that the connectionString value is not empty string, but is instead a space. Any non-empty value would do.

Share:
53,047

Related videos on Youtube

Didaxis
Author by

Didaxis

Programmer, philosopher, and philanthropist.

Updated on July 05, 2022

Comments

  • Didaxis
    Didaxis almost 2 years

    I have a Web.config with several ConnectionStrings

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

    Is there a way using config transformations to remove a specific connectionstring? Something Like:

    <connectionStrings>
        <xdt:Remove connStr2?
    

    Obviously no where near the correct syntax, but you get my drift...

  • Leniel Maccaferri
    Leniel Maccaferri over 12 years
    The XPath won't work. The correct syntax is the one mentioned by @hyke20 bellow. To test the transformation online you can use: webconfigtransformationtester.apphb.com
  • Leigh
    Leigh about 11 years
    The 'DefaultConnection-Web.config Connection String' argument cannot be null or empty. Is what I get when I place your code inside my web.release.config. Any ideas? Thanks
  • Nicholas Petersen
    Nicholas Petersen almost 8 years
    Why would you remove the actual namespace in the sample above? It is: xmlns:xdt="schemas.microsoft.com/XML-Document-Transform". Fully: [<configuration xmlns:xdt="schemas.microsoft.com/XML-Document-Transform">]
  • Dmytro Shevchenko
    Dmytro Shevchenko over 7 years
    Why is the connectionString attribute required, at all? Shouldn't xdt:Transform="Remove" be able to remove the node based on its name only?
  • Robotnik
    Robotnik over 7 years
    @DmytroShevchenko & Leigh - I don't get that error when I use hyke20's example, but if I leave off the 'connectionString' property I get a warning that it's missing.
  • M.Babcock
    M.Babcock about 7 years
    @AlexanderRyanBaggett Doing so limits the environment portability of the code which is the reason config transforms are used to begin with. There may be a way to do it but I'd suggest asking a new question.
  • Josh Gust
    Josh Gust almost 5 years
    You may get a warning if the attribute is not present, but the transformation should still apply correctly. I personally use connectionString="any" to be clear to future me that the transform doesn't care what the value of the connection string is.