web-dev-qa-db-fra.com

Comment changer la valeur d'attribut dans la section appSettings avec la transformation Web.config

Est-il possible de transformer le fichier Web.config appSettings suivant:

<appSettings>
    <add key="developmentModeUserId" value="00297022" />
    <add key="developmentMode" value="true" />
    /* other settings here that should stay */
</appSettings>

dans quelque chose comme ça:

<appSettings>
    <add key="developmentMode" value="false" />
    /* other settings here that should stay */
</appSettings>

Donc, je dois supprimer la clé developmentModeUserId, et je dois remplacer la valeur de la clé developmentMode.

244
dragonfly

Vous voulez quelque chose comme:

<appSettings>
  <add key="developmentModeUserId" xdt:Transform="Remove" xdt:Locator="Match(key)"/>
  <add key="developmentMode" value="false" xdt:Transform="SetAttributes"
          xdt:Locator="Match(key)"/>
</appSettings>

Voir aussi: Syntaxe de transformation Web.config pour le déploiement de projets d'application Web

429
Joe

Si vous souhaitez transformer le paramètre de votre application en fichier Web de configuration Web en fichier web.Release.config, procédez comme suit. Laissez votre fichier de configuration de l'application web.config est ceci-

<appSettings>
     <add key ="K1" value="Debendra Dash"/>
  </appSettings>

Maintenant, voici le web.Release.config pour la transformation.

<appSettings>
    <add key="K1" value="value dynamicly from Realease"
       xdt:Transform="SetAttributes"
          xdt:Locator="Match(key)"   
         />
  </appSettings>

Cela transformera la valeur de K1 en nouvelle valeur en mode réel.

9
Debendra Dash

Remplacement de tous les paramètres d'application

Il s’agit du cas de surdose dans lequel vous souhaitez simplement remplacer une section entière de web.config. Dans ce cas, je remplacerai tous les paramètres AppSettings dans le nouveau fichier web.config de web.release.config. Voici ma base de données web.config appSettings:

<appSettings>
  <add key="KeyA" value="ValA"/>
  <add key="KeyB" value="ValB"/>
</appSettings>

Maintenant, dans mon fichier web.release.config, je vais créer une section appSettings sauf que j'inclurai l'attribut xdt: Transform = "Replace" puisque je veux simplement remplacer l'élément entier. Je n'ai pas eu à utiliser xdt: Locator car il n'y a rien à localiser - je veux juste effacer l'ardoise et tout remplacer.

<appSettings xdt:Transform="Replace">
  <add key="ProdKeyA" value="ProdValA"/>
  <add key="ProdKeyB" value="ProdValB"/>
  <add key="ProdKeyC" value="ProdValC"/>
</appSettings>

Notez que dans le fichier web.release.config, ma section appSettings a trois clés au lieu de deux, et les clés ne sont pas identiques. Voyons maintenant dans le fichier web.config généré ce qui se passe lorsque nous publions:

<appSettings>
   <add key="ProdKeyA" value="ProdValA"/>
   <add key="ProdKeyB" value="ProdValB"/>
   <add key="ProdKeyC" value="ProdValC"/>
 </appSettings>

Comme nous nous y attendions, les paramètres de la configuration web.config ont été complètement remplacés par les valeurs de la configuration web.release. C'était facile!

9
Joe