56 lines
1.8 KiB
C#
56 lines
1.8 KiB
C#
using Microsoft.Extensions.Configuration;
|
||
|
||
namespace Config;
|
||
|
||
public static class ConfigBuilderExtensions
|
||
{
|
||
/// <summary>
|
||
/// 创建默认配置(约定优于配置)
|
||
/// 自动查找 appsettings.json,启用热重载和环境变量
|
||
/// </summary>
|
||
/// <param name="basePath">基础路径,默认为应用程序目录</param>
|
||
/// <param name="environmentPrefix">环境变量前缀,默认为 "APP_"</param>
|
||
/// <returns>配置管理器</returns>
|
||
public static ConfigManager CreateDefault(
|
||
string? basePath = null,
|
||
string? environmentPrefix = "APP_")
|
||
{
|
||
basePath ??= AppContext.BaseDirectory;
|
||
|
||
// 查找配置文件(appsettings.json, appsettings.Development.json 等)
|
||
var configFiles = new List<string> { "appsettings.json" };
|
||
|
||
// 根据环境添加特定配置
|
||
var environment = Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT")
|
||
?? Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")
|
||
?? "Production";
|
||
|
||
var envConfigFile = $"appsettings.{environment}.json";
|
||
var envConfigPath = Path.Combine(basePath, envConfigFile);
|
||
if (File.Exists(envConfigPath)) configFiles.Add(envConfigFile);
|
||
|
||
// 构建配置
|
||
return ConfigBuilder.BuildFromFiles(
|
||
configFiles.ToArray(),
|
||
true,
|
||
true,
|
||
environmentPrefix,
|
||
basePath
|
||
);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 创建最小化配置(只有 appsettings.json)
|
||
/// </summary>
|
||
public static ConfigManager CreateMinimal(string? basePath = null)
|
||
{
|
||
basePath ??= AppContext.BaseDirectory;
|
||
|
||
return ConfigBuilder.BuildFromFiles(
|
||
new[] { "appsettings.json" },
|
||
false,
|
||
false,
|
||
basePath: basePath
|
||
);
|
||
}
|
||
} |