web-dev-qa-db-fra.com

Comment modifier un paramètre web.config à l'aide de la syntaxe de transformation?

J'ai une valeur stockée dans mon fichier web.config que je voudrais modifier lors de la publication du site. Je veux passer de TEST à LIVE.

<appSettings>
    <add key="RequestMode" value="TEST" />
    // other keys here
</appSettings>

Est-ce possible d'utiliser la syntaxe de transformation web.config? Si c'est le cas, comment?

Merci.

21
dotnetnoob

Oui, cela est possible avec la syntaxe de transformation. Cette transformation devrait faire l'affaire:

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.Microsoft.com/XML-Document-Transform">
  <appSettings>
    <add key="RequestMode" value="LIVE" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
  </appSettings>
</configuration>
45
Erik Schierboom

Cela est possible immédiatement à l'aide de Visual Studio 2010. Le seul inconvénient est que ce processus est exécuté à partir de Visual Studio lorsque vous utilisez les fonctionnalités de publication qu'il contient. Vous n'obtiendrez pas la possibilité d'obtenir cette transformation de MSBuild (ce qui entrave les générations automatisées).

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

Source: Web.Config Transformations VS 2010

Assurez-vous également que votre fichier de transformation Web.Config.XXXX correspond à votre définition de génération. Par exemple, le débogage et la publication sont pris en charge par défaut. Vous devez donc disposer d'un Web.Config.Release pour ajuster Web.Config lors de la publication en mode de publication.

1
Frazell Thomas

Vous pouvez également utiliser l'outil CTT pour effectuer une transformation Web Site Web CTT Vous pouvez ensuite, après la publication de vos fichiers, avant de déployer avec powershell transformer la configuration Web (conserver un fichier de transformation), puis simplement changer le nom en cours. déploiement

0

J'ai trouvé le code ci-dessous à http://mundrisoft.com/tech-bytes/web-config-transformation-for-project-deployment/ , qui fonctionnait:

<configuration xmlns:xdt="http://schemas.Microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="MyDB" 
      connectionString="ReleaseSQLServer" 
      xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
</configuration
0
Robb Ribeiro