[英]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.