2015-07-03 91 views
8

我有幾個環境的web.config轉換。在配置文件中,我有一個包含多個設置和值對的應用程序設置部分。web.config轉換爲<applicationSettings>

我試過基於我用來匹配名稱的語法,並更改連接字符串以匹配設置並更改值,但轉換失敗。這是可能嗎?

所以我的web.config有:

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value>Initial Value</value> 
     </setting> 
    </AppName.My.MySettings> 
</applicationSettings> 

我轉換文件具有

<applicationSettings> 
    <add name="setting1" value="Changed Value" xdt:Transform="SetAttributes" xdt:Location="Match(name)"/> 
</applicationSettings> 

我沒有得到任何錯誤,當我預覽變換,但而連接字符串設置轉化爲設置1的值不是。任何幫助讚賞。

UPDATE

<applicationSettings> 
    <add name="setting1" value="Changed Value" xdt:Transform="Replace" xdt:Location="Match(name)"/> 
</applicationSettings> 

不幸的是同樣的問題...沒有錯誤和沒有變換。

SOLUTION 我沒忘記提到我有一個以上的設置,以顯着的答案是部分的解決方案......這是我做到了...... Web.Config中......

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value>Initial Value 1</value> 
     </setting> 
     <setting name="setting2" serializeAs="String"> 
      <value>Initial Value 2</value> 
     </setting> 
     <setting name="setting3" serializeAs="String"> 
      <value>Initial Value 3</value> 
     </setting> 
    </AppName.My.MySettings> 
</applicationSettings> 

變換文件

<applicationSettings xdt:Transform="Replace"> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value>CHANGED VALUE 1</value> 
     </setting> 
     <setting name="setting2" serializeAs="String"> 
      <value>Initial value 2</value> 
     </setting> 
     <setting name="setting3" serializeAs="String"> 
      <value>CHANGED VALUE 3</value> 
     </setting> 
    </AppName.My.MySettings> 
</applicationSettings> 

注意我,包括我的所有嵌套設置和值,即使其中一些並沒有在我的例子設定2的情況下更改。

+0

值是一個節點不是一個屬性,你必須使用轉換=「替換爲」 – Thorarins

+0

@Andreas ......請看到我的更新..仍然沒有喜悅。 – Mych

回答

-2

原始文件:

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value>Initial Value</value> 
     </setting> 
    </AppName.My.MySettings> 
</applicationSettings> 

轉換文件:

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value xdt:Transform="Replace">Changed Value</value> 
     </setting> 
    </AppName.My.MySettings> 
    </applicationSettings> 
+1

Andreas,轉換它自己沒有工作我不得不使用xdt:Transform =「Replace」(區分大小寫)。我現在有另一個問題。我有多個設置(準確地說12個)。變換預覽顯示變換已完成,但所有變換均已完成,因此在變換設置1結束時,變換值爲設置12,而所有其他設置2至設置12保持不變。任何想法......我想我需要一個位置。 – Mych

+0

必須看到xml以幫助您 – Thorarins

+1

Sorted ....而不是將xdt:Transform =「Replace」放置在值參數中我將它放置在applicationSettings的根目錄下,並且工作正常...在您指出我在正確的方向......用正確的解決方案更新了問題。 – Mych

0

轉換文件:

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting xdt:Transform="Replace" xdt:Locator="Match(name)" name="setting1" serializeAs="String"> 
      <value>Changed Value</value> 
     </setting> 
    </AppName.My.MySettings> 
    </applicationSettings> 

16

我知道這是有點晚了,但下面當你有多個文件時,轉換文件將允許你轉換一個設置。

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <applicationSettings> 
    <YourProject.Settings> 
     <setting name="Log4NetPath" serializeAs="String" xdt:Transform="Replace" xdt:Locator="Match(name)"> 
     <value xdt:Transform="Replace">NewPath</value> 
     </setting> 
    </YourProject.Settings> 
    </applicationSettings> 
</configuration>