Files
sharp-basic/src/Sharp/Config/ConfigBuilderExtensions.cs
T
2025-12-30 09:17:25 +08:00

56 lines
1.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
);
}
}