2025年11月17日 星期一

透過 SlowCheetah 套件來管理 appsettings.json

之前文章有介紹 ASP.NET Core 設定檔 appsettings.json 是如何運作的,以及相關的對應機制;

但因為在發行過程中,其相關對應環境的設定檔,預設都也一併輸出...



因為預設機制,覺得輸出太多非該環境的設定檔,覺得怪怪的;故想說有甚麼方法,可以發行

時就僅合併輸出該環境的內容即可,也就是說僅有一個 appsettings.json 檔案


根據以往的經驗,有個套件叫 SlowCheetah ,可以幫助檔案轉換成對應所有組態;


可以透過 nuget 安裝套件,須注意這是安裝在 Visual Studio


安裝後開啟相關專案,並且在檔案(.json、.log)上點選滑鼠右鍵會看到 Add Transform


由於 SlowCheetah 是以組態為依據來產生對應的檔案,故使用上算是滿直覺的,

這邊在mininal api 專案新增 Staging 的組態,來源參考可以選 Release


這時我們使用轉換


會先跳出提醒,是否執行轉換透過 SlowCheetah


按下「是」,就會產生對應組態的檔案

這時加入相關key/value,在 appsettings.json 檔案加入 ConnectionStringss


在 appsettings.Staging.json 檔案也加入對應的 key/value



建置後查看專案後查看輸出(記得建置時的組態選 Staging)


開啟 appsettings.json 檔案,可以看到內容被置換了



建置的動作明顯被調整了,觀察 .csproj 檔案(直接點選專案兩下),明顯寫到會移

除相關檔案,各個檔案相依於 appsettings.json 檔案,並且透過轉換(IsTransformFile)

來置換內容,並且相關建置動作都是使用 SlowCheetah


這時我們加入 Development 組態並且再次點選轉換,再觀察 .csproj,可以看到 Development 被加入了


最後,來試著透過指令來發行專案

dotnet publish -c Release



調整程式碼,準備輸出 ConnectionStrings


執行指令dotnet publish -c Release


將站台架設到本機 IIS(記得若有多個應用程式需要新增多個應用程式集區)




檢視網頁



此時我們將 Release 字串調整為 Testing,然後再執行 dotnet publish -c Release


發行目錄下也僅會只有 appsettings.json 一個檔案


沒有留言:

張貼留言