簡體   English   中英

web.config 轉換為<applicationSettings>

[英]web.config transforms for <applicationSettings>

我有多種環境的 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>

預覽轉換時我沒有收到任何錯誤,但連接字符串設置已轉換,而 setting1 的值卻沒有。 任何幫助表示贊賞。

更新

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

不幸的是同樣的問題......沒有錯誤也沒有轉換。

解決方案我確實忘記提到我有不止一個設置,所以標記的答案是部分解決方案......我就是這樣做的...... 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 那樣更改。

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

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

轉換文件:

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

https://hk.saowen.com/a/7857cf5ec8f14af8504e7b9bb029e4cb0047336394e464a9b3807a9e1e587b93

在單獨的元素上使用變換和定位器屬性

不必在與 Locator 元素相同的元素中設置 Transform 屬性。 您可以在父元素上指定一個 Locator 元素,以便選擇要使用其子元素的元素。 然后,您可以在子元素中指定 Transform 屬性,以便將更改應用於子元素。

以下示例顯示如何使用 Locator 屬性為指定路徑選擇位置元素。 但是,僅變換所選位置元素的子元素。

<configuration xmlns:xdt="...">
  <location path="C:\MySite\Admin" xdt:Locator="Match(path)"> 
    <system.web>
      <pages viewStateEncryptionMode="Always"
        xdt:Transform="SetAttributes(viewStateEncryptionMode)" />
    </system.web> 
  </location> 
</configuration>

如果指定了 Locator 屬性,但未在同一元素或子元素中指定 Transform 屬性,則不會進行任何更改。

同意樓上的回答。 您需要確定是替換(轉換)節點還是屬性

一個節點在這里是<value>Datasource=connection info</value>

一個屬性是這里的名稱<value name="connection info"/>

要替換節點,請使用:

<value xdt:Transform="Replace">
Datasource="connection info";
</value>    

替換屬性

<value name="other connection info"
   xdt:Transform="SetAttributes"
   xdt:Locator="Match(name)"/>

更詳細的替換屬性參考: https : //docs.microsoft.com/en-us/previous-versions/dd465326(v=vs.100)?redirectedfrom=MSDN

原始文件:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM