在 .Net Core Console 依環境使用不同設定檔

上次有提到如何在 Console 使用 .Net Core 的 Configuration 自動對應到 class。

今天遇到需要依環境使用不同的環境設定檔,筆記一下。

環境

Visual Studio 2019
.Net Core 3.1

流程

  1. 設定 Debug 執行的環境變數
    1. 在 Solution Explorer 要執行的專案上按右鍵選 Properties
    2. 選 Debug 分頁
    3. 在 Environment variables 加入 Name: HOSTING_ENVIRONMENT Value: Development
  2. appsettings.json 同個位置的地方加入新的設定檔 appsettings.Development.json ,這份設定檔可以加入該環境需要的不同參數。
  3. 程式碼的部分加入如下
var environmentName = Environment.GetEnvironmentVariable("HOSTING_ENVIRONMENT");
var builder = new ConfigurationBuilder()
  .SetBasePath(Directory.GetCurrentDirectory())
  .AddJsonFile("appsettings.json")
  .AddJsonFile($"appsettings.{environmentName}.json", true); // 多加這行

在準備要拿來對應的 class 加入該參數 Property ,在自動對應時就會依環境把值給賦與進去了,環境不對時就是 default 值了。

至於怎麼對應,class 怎麼寫就參考上一篇吧! 在 .Net Core Console 自動將設定檔對應到類別上

References

SO