2012-06-14 2 views
193

Можно ли преобразовать следующий Web.config AppSettings файл:Как изменить значение атрибута в разделе AppSettings с преобразованием Web.config

<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.

ответ

345

Вы хотите что-то вроде:

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

http://msdn.microsoft.com/en-us/library/dd465326(VS.100).aspx Смотрите для получения дополнительной информации.

+20

Обратите внимание, что ключи чувствительны к регистру! – Cosmin

+1

Отличный ответ. Я пытался использовать сторонние варианты, такие как медленный гепард и никуда не выходить - это было просто и идеально. – Steve

+2

@stevens: вам нужен медленный гепард, если вы хотите преобразовать, скажем, файлы app.config для собственных приложений. Синтаксис, однако, должен быть идентичным, если я помню (прошло некоторое время с тех пор, как мне пришлось использовать медленный гепард). – Ellesedil

0

Замена всех AppSettings

This is the overkill case where you just want to replace an entire section of the web.config. In this case I will replace all AppSettings in the web.config will new settings in web.release.config. This is my baseline web.config appSettings: 


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

Now in my web.release.config file, I am going to create a appSettings section except I will include the attribute xdt:Transform=”Replace” since I want to just replace the entire element. I did not have to use xdt:Locator because there is nothing to locate – I just want to wipe the slate clean and replace everything. 


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



Note that in the web.release.config file my appSettings section has three keys instead of two, and the keys aren’t even the same. Now let’s look at the generated web.config file what happens when we publish: 


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

Подобно тому, как мы ожидали - в web.config AppSettings были полностью заменены значениями в web.release конфигурации. Это было легко!

Смежные вопросы