Dot-Net

<applicationSettings> 的 web.config 轉換

  • June 25, 2021

我有幾個環境的 web.config 轉換。在配置文件中,我有一個 applicationSettings 部分,其中包含幾個設置和值對。

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

所以我的 web.config 有:

&lt;applicationSettings&gt;
   &lt;AppName.My.MySettings&gt;
       &lt;setting name="setting1" serializeAs="String"&gt;
           &lt;value&gt;Initial Value&lt;/value&gt;
       &lt;/setting&gt;
   &lt;/AppName.My.MySettings&gt;
&lt;/applicationSettings&gt;

我的轉換文件有

&lt;applicationSettings&gt;
   &lt;add name="setting1" value="Changed Value" xdt:Transform="SetAttributes" xdt:Location="Match(name)"/&gt;
&lt;/applicationSettings&gt;

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

更新

&lt;applicationSettings&gt;
   &lt;add name="setting1" value="Changed Value" xdt:Transform="Replace" xdt:Location="Match(name)"/&gt;
&lt;/applicationSettings&gt;

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

解決方案我確實忘記提及我有多個設置,所以標記的答案是部分解決方案…這就是我的做法… Web.Config …

&lt;applicationSettings&gt;
   &lt;AppName.My.MySettings&gt;
       &lt;setting name="setting1" serializeAs="String"&gt;
           &lt;value&gt;Initial Value 1&lt;/value&gt;
       &lt;/setting&gt;
       &lt;setting name="setting2" serializeAs="String"&gt;
           &lt;value&gt;Initial Value 2&lt;/value&gt;
       &lt;/setting&gt;
       &lt;setting name="setting3" serializeAs="String"&gt;
           &lt;value&gt;Initial Value 3&lt;/value&gt;
       &lt;/setting&gt;
   &lt;/AppName.My.MySettings&gt;
&lt;/applicationSettings&gt;

轉換文件

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

請注意,我必須包含所有嵌套設置和值,即使其中一些沒有像我的範例中的設置 2 那樣更改。

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

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

轉換文件:

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

網路配置轉換

引用自:https://stackoverflow.com/questions/31208021