面臨複雜的開發測試環境,常需要切換參數來進行本機/測試機的偵錯模式測試
但偏偏組態轉換檔只有在發行時才會對 Web.config 發揮作用
這時可以透過 Fast Koala 來實現建置時期 Web.config 資訊轉換之願望
動機
目前專案開發環境身處自家公司與客戶公司兼容環境中,工作流程都會是在自家公司環境測試無誤後上板至客戶端,但在開發時期常需要進行雙邊的偵錯模式測試 (特定環境異常資料常常是造成錯誤的元凶),因此需要切換不同參數(資料庫連線字串、服務位置...) 來符合不同環境需求,無奈組態轉換檔 (ex. Web.Debug.config) 僅在發行時對 Web.config 發揮作用,若想要在偵錯模式進行調整,往往需要手動以註解方式來切換 Web.config 連線字串等資訊,超級無敵困擾。好加在現在可以透過 Fast Koala 實現我們的需求,以下說明。
案例說明
測試專案很單純就是從 Web.config 中取得 Key 為 Environment 的 Value 來顯示在畫面上。
Web.config 中 Environment 值為 Local
最後就是在 View 中印出 Environemnt 資訊
執行結果
若想要切換 Debug 組態後套用 Web.Debug.config 進行資訊的轉換時會做以下調整
點選 Preview Transform 驗證一下取代如我們所需要的方式進行
在 Preview 中轉換語法確實發揮作用,將 Environment 調整為 Debug 文字
最後將組態設定為 Debug 執行啟動專案,看到畫面還是吃 Web.config 的資料 (因 Web.Debug.config 僅在發行時對 Web.config 發揮異動作用) ,因此如果要達到我們所需要的需求,就需要是在編譯時期可以自動依照組態轉換檔設定調整 Web.config 資訊,而本篇文章介紹的 Fast Koala 就可以實現這個機制,請繼續看下去。
安裝
可以直接從 官方網站 下載安裝,或者看看作者 GitHub 提供的相關資訊。
本身有些限制如下,如果有此需求的朋友剛好是以下型態的專案,就請略過此篇文章吧
- Web sites are not supported and will never be supported.
- This tool enables build-time transformations for ASP.NET 4.6-or-below web apps, including ASP.NET MVC 5.
- ASP.NET 5 is not supported; it might not ever be supported.
實作
接著上述案例,我們可以發現在 Web.config 中按滑鼠右鍵會出現 Enable build-time transformations 選項
出現警語,告知 Web.config 將會在每次建置時重新產出
同意後,選擇設定新建立 Web.base.config 於哪個資料夾位置中
產出新的 Web.Base.config 檔案,內容其實就是原本的 Web.config 資訊,並且具原有 Debug 與 Release 兩種組態轉換檔 ,重點如下:
- 在每次建置時期,會透過 Web.Base.config 與選定組態轉換檔 (ex. Web.Debug.config) 來更新 Web.config
- 後續僅需針對 Web.Base.config 及各組態轉換檔進行調整即可
- 由於 Web.config 將不斷刷新,因此不建議加入版控
瀏覽一下 Web.Base.config 內容 (與原本的 Web.config 資訊相同)
瀏覽一下 Web.Debug.config 內容
瀏覽一下 Web.Relase.config 內容
接著見證奇蹟的時候來臨了
當組態切為 Debug 後編譯
專案中的 Web.config 就直接依照 Web.Base.config + Web.Debug.config 轉換結果呈現
執行結果
當組態切為 Release 後編譯
專案中的 Web.config 就直接依照 Web.Base.config + Web.Release.config 轉換結果呈現
執行結果
最後由於Web.config會依值不斷被外部修改,因此可以考慮勾選以下選項,避免此擾人訊息不斷出現。
參考資訊
希望此篇文章可以幫助到需要的人
若內容有誤或有其他建議請不吝留言給筆者喔 !