[.Net Core] 在.Net Core Console中讀取應用程式組態檔 appsettings.json

Read appsettings.json in .Net Core Console Application

前言

在.Net Core Console應用程式中,預設新增項目沒有Web專案的appsettings.json,只好自己動手來

實作

本文環境Visual Studio 2019 版本16、.Net Core Console 2.2

對著專案右鍵加入>新增項目

選擇JSON檔案,自行命名為appsettings.json

即使Visual Studio 2019,剛加入的JSON檔案預設仍然不是UTF8編碼,不支援中文,還得自行到檔案總管用記事本打開使用UTF8存檔覆蓋

在Visual Studio中再對著JSON檔案右鍵>屬性

確認在專案建置的時候,此檔案會「永遠複製」輸出到.dll檔同個目錄

以下是我appsettings.json的內容

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=.\\sqlexpress2014;Database=MyDB;Trusted_Connection=True;MultipleActiveResultSets=true"
  },
  "SystemName": "ACCD711D7"
}

接著對專案右鍵>管理Nuget套件,搜尋 Microsoft.Extensions.Configuration.Json 加入專案,準備讀取JSON檔中的內容

※過程中也會把相關聯的Microsoft.Extensions.Configuration.FileExtenstions、Newtonsoft.Json一併安裝

以下是讀取組態檔的程式碼

using System;
/*引用命名空間*/
using Microsoft.Extensions.Configuration;


namespace Console_ConfigTest
{
    class Program
    {
        static void Main(string[] args)
        {
            IConfiguration config = new ConfigurationBuilder()
           .AddJsonFile("appsettings.json", optional:true,reloadOnChange: true)
           .Build();


            //取得連線字串
            string connString = config.GetConnectionString("DefaultConnection");
            //取得自定義組態內容
            string SystemName = config["SystemName"];

            Console.WriteLine($@"連線字串:{connString}");
            Console.WriteLine($@"自定義:{SystemName}"); 
        }//end Main Function
    }
}

執行結果: