原理可以參考這篇:怎樣判斷 .NET Core (包含 ASP.NET Core)是 Debug 或 Release ?
public static class DebuggingProperties
{
///
/// 檢查當前正在運行的程式組態。
///
public static string Config
{
get
{
if (_ConfigAttribute == null)
{
var assembly = Assembly.GetEntryAssembly();
if (assembly == null)
{
// 由於調用 GetFrames 的 StackTrace 實例沒有跳過任何幀,所以 GetFrames() 一定不為 null。
assembly = new StackTrace().GetFrames().Last().GetMethod().Module.Assembly;
}
var assemblyConfigurationAttribute = assembly.GetCustomAttribute();
_ConfigAttribute = assemblyConfigurationAttribute.Configuration;
}
return _ConfigAttribute;
}
}
private static string _ConfigAttribute;
}
appsettings.json 檔案設定格式如下:
{
"Release": {
"DefaultConnection": " Release Server"
},
"Debug": {
"DefaultConnection": "Debug Server"
}
}
需要組態設定時,只要如下呼叫即可:
在 Startup.cs 新增下列程式碼:
public IConfiguration _config { get; } // 取的 appsettings.json 的設定 public Startup(IConfiguration configuration) { _config = configuration; } // 執行中取得組態設定的方式 public void Run() { // 取的 appsettings.json 的 Release 或 Debug 組態設定 var cfg_ = _config.GetSection(DebuggingProperties.Config); // 取的 appsettings.json 指定組態設定內容 string def_ = cfg_ .GetValue("DefaultConnection"); }