2021年3月28日 星期日

.NET Core App 使用「組態管理員」讀取對應 appsettings.json 檔案

在 .NET Core 的世界,設定檔是透過 appsettings.json 檔案來完成,

這應該有點類似之前的組態設定檔,只是現在都是以 .json 格式呈現。

以下透過應用程式來說明

建立專案

首先,使用VS 建立主控台應用程式


建立好後,專案結構如下,很輕爽,甚麼都沒有


這時候可以手動加入 appsettings.json 檔案,其實要取別的檔名也是可以


記得需要將檔案設定為輸出


另外,由於需要支援中文格式,可能需要注意檔案格式要 urf-8,不然會亂碼


安裝套件

使用微軟提供的相關套件即可操作,可先安裝以下二個套件

  • Microsoft.Extensions.Configuration.Json:提供Json 檔案取得組態設定的操作

  • Microsoft.Extensions.Configuration.Binder:提供更多方便取值的操作


讀取設定檔內容

程式碼撰寫輸出文字


這時,在設定檔中加入相關鍵值,如下圖

程式可指定section key 的方式來取得該物件的個別屬性

或是,直接透過泛型的特性直接轉型為物件,再透過公開的屬性取值


值得一提的是,若設定檔的內容剛好符合某個物件結構,可以一開始就使用 Get<T>() 取得即可

透過組態管理員讀取對應設定檔

以往,有需要會將不同的設定值放到組態檔(設定檔),再透過切換不同的組態管理

取得對應的設定檔,這邊也來試試。


首先加入 appsettings.Debug.json、appsettings.Release.json 檔案

相關內容如下,僅有 message 欄位

接著開啟專案檔(.csproj),將兩個檔案(Debug、Release) 相依為appsettings.json


再觀察方案總管的檔案結構,可以debug與release 兩個檔案已調整至appsettings.json 下


此時若編譯後,查看對應的資料夾發現都會輸出,但這不是我們要的,我們希望若是

Debug 組態時 Release 設定檔不應該輸出,反之亦然。


另外,這邊有個地方需要注意,執行專案會先讀取 appsettings.json 再讀取 appsettings.Debug.json 


由於我們希望透過組態檔的切換,達到輸出對應的 appsettings.json 檔;故需再調整 .csproj 檔

,如下圖所示,透過 Choose When 語法即可對應環境輸出檔案,相關文章可參考



可調整組態管理員


以下是輸出檔案,其中appsettings.json 檔案會是固定輸出,其他 Debug 與Release 皆會

對應當時的組態輸出


以上是透過組態管理員輸出對應設定檔,亦有透過「環境變數」的設定方式,後續介紹

沒有留言:

張貼留言