Console 內某組變數重複性使用較高, 假如不小心忘了修改某處, 可能會造成錯誤。
除此之外, 使用 Configuration 依賴 appsetting.json 的方式也可提高我們針對變數維護的方便。
如在 App Service 內執行多個 Console 當為 WebJobs 時, 也可以依賴這種方式在 Configuration 內進行維護。
概述
Console 內某組變數重複性使用較高, 假如不小心忘了修改某處, 可能會造成錯誤。
除此之外, 使用 Configuration 依賴 appsetting.json 的方式也可提高我們針對變數維護的方便。
如在 App Service 內執行多個 Console, 也可以依賴這種方式在 Configuration 內進行維護。
正文
首先, 我們需安裝的 NuGet
- Microsoft Extensions Configuration : 讓 Console 可執行 Configuration
- Microsoft Extensions Configuration Environment Variables : Configuration 使用環境變數
- Microsoft Extensions Configuration JSON 可讀取 JSON 檔案
install-package Microsoft.Extensions.Configuration
install-package Microsoft.Extensions.Configuration.EnvironmentVariables
install-package Microsoft.Extensions.Configuration.Json
然後建立 appsettings.json 的 JSON 檔案, 並且在 App Setting Properties 內 Copy if newer 需設定 Copy if not。
如沒有設定進行複製, 執行過程中將無法取得 JSON 檔案內的內容。
然後 appsettings.json 測試內容如下:
{
"Dev" : "This is appsetting."
}
完成後, 由於我只是設定 Sample, 故在 Program 下新增方法
public static IConfigurationRoot Configuration()
{
var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVINROMENT");
var builder = new ConfigurationBuilder()
.AddJsonFile($"appsettings.json", true, true)
.AddJsonFile($"appsetting.{environment}.json", true, true)
.AddEnvironmentVariables();
return builder.Build();
}
完成後, 在 Main 內使用 Configuration() 呼叫變數, 完整 Program 內容如下:
class Program
{
static void Main(string[] args)
{
string value = Configuration()["Dev"];
Console.WriteLine(value);
}
public static IConfigurationRoot Configuration()
{
var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVINROMENT");
var builder = new ConfigurationBuilder()
.AddJsonFile($"appsettings.json", true, true)
.AddJsonFile($"appsetting.{environment}.json", true, true)
.AddEnvironmentVariables();
return builder.Build();
}
}
完成後即可執行
參考資源
- Configuring environments in .NET console app - https://www.damirscorner.com/blog/posts/20210305-ConfiguringEnvironmentsInNetConsoleApp.html