Web.config変換を使用してappSettingsセクションの属性の値を変更する方法


260

次のWeb.config appSettingsファイルを変換することは可能ですか?

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

このようなものに:

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

だから、私は、キー削除する必要がdevelopmentModeUserIdを、私は、キーの値を交換する必要がdevelopmentMode

回答:


452

あなたは次のようなものが必要です:

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

参照:WebアプリケーションプロジェクトのデプロイメントのためのWeb.config変換構文


24
キーは大文字と小文字が区別されることに注意してください!
Cosmin 2013年

2
すばらしい答えです。私はSlow Cheetahのようなサードパーティのオプションを試していて、どこにも行きませんでした-これはシンプルで完璧でした。
Steve

2
@stevens:たとえば、ネイティブアプリケーションのapp.configファイルを変換する場合は、Slow Cheetahが必要です。ただし、覚えておくと、構文は同じになるはずです(Slow Cheetahを使用する必要があったので、久しぶりです)。
Ellesedil 2016

スローチートの代わりに、myotherconfig.staging.configを作成し、web.Staging.configトランスフォームで、参照をweb.configのmyotherconfig.configに変換します
nologo

3
一部の人々を助けるかもしれないちょっとした明確化:xdt:Transform="SetAttributes" xdt:Locator="Match(key)"パーツはWeb.Whatever.configで使用されるべきであり、Web.configファイルでは使用されるべきではありません。
user3533716

11

すべてのAppSettingsの置き換え

これは、web.configのセクション全体を置き換えるだけの過剰なケースです。この場合、web.configのすべてのAppSettingsをweb.release.configの新しい設定に置き換えます。これは私のベースラインのweb.config appSettingsです:

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

次に、要素全体を置き換えるだけなので、属性xdt:Transform =” Replace”を含めることを除いて、web.release.configファイルにappSettingsセクションを作成します。検索するものがないため、xdt:Locatorを使用する必要はありませんでした。スレートをきれいに拭いてすべてを交換したいだけです。

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

web.release.configファイルの私のappSettingsセクションには2つのキーではなく3つのキーがあり、キーは同じではないことに注意してください。次に、生成されたweb.configファイルを見て、公開するとどうなるかを見てみましょう。

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

予想どおり、web.config appSettingsはweb.release configの値に完全に置き換えられました。簡単でした!


9

アプリケーション設定をWeb構成ファイルからweb.Release.configに変換する場合は、次の手順を実行する必要があります。あなたのweb.configアプリ設定ファイルはこれです-

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

これが変換用のweb.Release.configです。

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

これにより、K1の値が実際のモードの新しい値に変換されます。


1

変換が必要以上の情報を持っているのは好きではありません。したがって、鍵を再提示する代わりに、条件意図を述べるだけにします。このようにすると、少なくともIMOのほうが意図がわかりやすくなります。また、xdt読者に示すためにすべての属性を最初に配置しようとします。これらは変換であり、定義されている新しいものではありません。

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

上記では、最初の要素が要素を削除していることがわかります。2つ目は属性の設定です。ここで定義する属性を設定/置換します。この場合、単にに設定さvaluefalseます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.