web-dev-qa-db-fra.com

Comment supprimer un ConnectionString à l'aide de transformations de configuration

J'ai un Web.config avec plusieurs ConnectionStrings

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

Existe-t-il un moyen d'utiliser des transformations de configuration pour supprimer une chaîne de connexion spécifique? Quelque chose comme:

<connectionStrings>
    <xdt:Remove connStr2?

Évidemment pas du tout près de la syntaxe correcte, mais vous obtenez ma dérive ...

65
Didaxis

De la documentation MSDN sur le sujet:

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

Le Transform="Remove" est la magie que vous recherchez. Il y a aussi Transform="RemoveAll" que vous pourrez peut-être utiliser conjointement avec un ou des ajouts spécifiques.

[~ # ~] modifier [~ # ~]

Après réflexion, vous pouvez également combiner l'attribut Locator avec le Remove défini ci-dessus pour limiter les éléments que vous souhaitez réellement supprimer.

Plus définitivement:

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

Ou similaire devrait fonctionner.

66
M.Babcock

Cela supprimera une chaîne de connexion spécifique basée sur son nom.

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

Notez que la valeur connectionString n'est pas une chaîne vide, mais plutôt un espace. Toute valeur non vide ferait l'affaire.

101
hyke20