[.NET] Web.config / App.config Transformation (switch Debug or Release mode)
在某些情況之下我們可能會依照環境而調整程式中的參數,比如說連線字串
如何同時維護 Debug/Release 模式?我們有幾種手法來調整不同環境的參數
- 手動調整(駐解/反駐解)
- #if(Debug)
- Conditional
- 組態檔Web.config / App.config
本篇要介紹的就是最後一種方式,組態檔。
- 組態檔預設已經有 Web.config、Web.Debug.config、Web.Release.config 三種檔案
- Winform 及 Console 沒有這樣的檔案 Debug/Release ,所以可以安裝 SlowCheetah 擴充工具
使用情境:
假設我有三種環境,三種環境的組態設定都不一樣,我該如何做?
本文連結
首先,我在 Web.config 組態檔裡,有一個 appSetting,名為 test
@Web.config
<appSettings>
<add key="test" value="開發環境" />
</appSettings>
再來為Debug及Release模式加上 xdt:Transform="SetAttributes" xdt:Locator="Match(key) 標籤
@Web.Debug.config
<appSettings>
<add key="test" value="測試環境" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
</appSettings>
@Web.Release.config
<appSettings>
<add key="test" value="正式環境" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
</appSettings>
當我在 VS 按 Ctrl+F5 的時候,用的是Web.config:
按下發行(debug)時,用的是Web.Debug.config:
按下發行(Release)時,用的是Web.Release.config:
透過 Transform 標籤,VS 在建置模式可以幫我們替換掉組態檔的 test 的 value
PS.若對 Web 發行有問題可以參考
http://www.dotblogs.com.tw/yc421206/archive/2013/03/15/96849.aspx
http://www.dotblogs.com.tw/yc421206/archive/2014/01/21/141965.aspx
PS.若是要替換連線字串,原本我們要 Match(Key),改成Match(name),Transform標籤也不需要特別記下寫法,抄 VS 給予的範例就可以了
Winform / Console應用程式,在安裝完擴充套件之後就有 Add Transform 的功能,也能夠輕易的產生出App.Debug.config / App.Release.config,使用方式也跟 Web Site 一模一樣
預設它就沒有像 Web 那樣有三種模式,不過我們可以自己加上一個 Dev mode,如下圖步驟:
延用上一個範例情境,我們也可以有三種開發模式
Dev(開發環境)
Debug(測試環境)
Release(正式環境)
PS.應用程式除了打包帶走之外,使用 ClickOnce 也是一種選擇
http://www.dotblogs.com.tw/yc421206/archive/2012/03/02/70464.aspx
http://www.dotblogs.com.tw/yc421206/archive/2012/03/07/70564.aspx
http://www.dotblogs.com.tw/yc421206/archive/2013/03/25/98870.aspx
文章出自:http://www.dotblogs.com.tw/yc421206/archive/2014/07/28/146082.aspx
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET