開始以為像SpringBoot 那樣,執行時也行效的,結果發現只對釋出生效,VS裡執行時不生效,湊活著用。
.Net Core appsettings.json 改進了
Visual Studio 為多環境設定 Web.config
不同的環境,存在不同的設定,如:資料庫連線字串,通過多設定,方便做環境切換,設定的修改
<!--最簡單,最麻煩的做法-->
<configuration>
<appSettings>
<!--正式-->
<!--<add key="DbConnection" value="Data Source=10.176.1.2;Initial Catalog=vipsoft;User ID=sa;Password=....;" />-->
<!--測試-->
<!--<add key="DbConnection" value="Data Source=172.16.0.1;Initial Catalog=vipsoft;User ID=sa;Password=123456;" />-->
<!--開發-->
<add key="DbConnection" value="Data Source=172.16.0.2;Initial Catalog=vipsoft;User ID=sa;Password=666666;" />
</appSettings>
</configuration>
好的做法。
生成 -> 設定管理器
右擊 Web.config -> 新增設定轉換
將不同環境的設定項,新增至對應的組態檔中
Web.config
<appSettings>
<add key="Environment" value="Dev" />
</appSettings>
Web.Test.config
<appSettings>
<add key="Environment" value="Test" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
</appSettings>
屬性值 xdt:Transform 「SetAttributes」
指示此轉換的目的是更改 Web.config
檔案中現有元素的屬性值。 xdt:Locator
屬性值「Match (鍵) 」
指示要修改的元素是其key屬性與此處指定的屬性匹配的key元素。 元素的唯一其他屬性 add 是 value,這就是部署 的Web.config 檔案中將發生更改的內容。 此處顯示的程式碼會導致 value 元素的屬性 EnvironmentappSettings
在部署的 Web.config 檔案中設定為「Test」。
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<!--
在下例中,「Replace」轉換將替換
web.config 檔案的整個 <customErrors> 節。
請注意,由於
在 <system.web> 節點下僅有一個 customErrors 節,因此不需要使用「xdt:Locator」特性。
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
-->
</system.web>
該 xdt:Transform="RemoveAttributes(debug)"
屬性指定要 debug
從 system.web/compilation
已部署 的 Web.config 檔案中的元素中刪除該屬性。 每次部署釋出版本時,都會執行此操作。
修改釋出設定
#if TEST
#else
#endif