RuoVea.ExConfig 10.0.0

dotnet add package RuoVea.ExConfig --version 10.0.0
                    
NuGet\Install-Package RuoVea.ExConfig -Version 10.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RuoVea.ExConfig" Version="10.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="RuoVea.ExConfig" Version="10.0.0" />
                    
Directory.Packages.props
<PackageReference Include="RuoVea.ExConfig" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add RuoVea.ExConfig --version 10.0.0
                    
#r "nuget: RuoVea.ExConfig, 10.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package RuoVea.ExConfig@10.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=RuoVea.ExConfig&version=10.0.0
                    
Install as a Cake Addin
#tool nuget:?package=RuoVea.ExConfig&version=10.0.0
                    
Install as a Cake Tool

📋 RuoVea.ExConfig 组件概览

RuoVea.ExConfig 是一个功能强大的配置文件获取帮助类库,支持多种配置源和灵活的配置获取方式。

🏗️ 核心架构

1. 配置扫描目录约定

自定义配置扫描目录(按优先级顺序):
ConfigurationFiles
Configuration  
Config
ScanDirectories
忽略的配置文件目录:
IgnoreConfigurationFiles
IgnoreConfiguration
IgnoreConfig  
IgnoreDirectories

🔧 核心功能类

1. AppSettings 静态类

主要功能方法
基础配置获取
// 方式一:直接使用静态方法
var value = AppSettings.app("keyName");

// 方式二:通过 GetValue 方法
var value = AppSettings.GetValue("demo");
节点配置获取
// 获取配置节点值
AppSettings.app(params string[] sections)

// 示例:
var connectionString = AppSettings.app("ConnectionStrings", "DefaultConnection");
var logLevel = AppSettings.app("Logging", "LogLevel", "Default");
强类型配置绑定
// 递归获取配置信息数组
AppSettings.app<T>(params string[] sections)

// 示例:
var databaseConfig = AppSettings.app<DatabaseConfig>("Database");
var appSettings = AppSettings.app<AppConfig>("AppSettings");
配置节点操作
// 获取配置节点
AppSettings.GetSection(string key)

// 示例:
var section = AppSettings.GetSection("Jwt");
var issuer = section["Issuer"];
var audience = section["Audience"];
高级配置获取
// 获取强类型配置
AppSettings.GetConfig<T>(string path, bool loadPostConfigure = false)

// 示例:
var redisConfig = AppSettings.GetConfig<RedisConfig>("Redis");
var emailConfig = AppSettings.GetConfig<EmailConfig>("Email", true);
应用设置获取
// 泛型方式获取配置
AppSettings.GetAppSettings<T>(string key) where T : class, new()

// 示例:
var smtpSettings = AppSettings.GetAppSettings<SmtpSettings>("Smtp");
var awsSettings = AppSettings.GetAppSettings<AwsSettings>("AWS");
数据库连接字符串
// 获取数据库连接字符串
AppSettings.ConnectionStrings(string keyName)

// 示例:
var defaultConn = AppSettings.ConnectionStrings("DefaultConnection");
var readOnlyConn = AppSettings.ConnectionStrings("ReadOnlyConnection");

2. ConfigUtil 工具类

多格式配置文件支持
JSON 配置获取
ConfigUtil.GetJsonConfig()

// 功能:
// - 读取 JSON 格式配置文件
// - 支持嵌套对象解析
// - 自动类型转换
// - 环境变量覆盖支持
XML 配置获取
ConfigUtil.GetXmlConfig()

// 功能:
// - 读取 XML 格式配置文件
// - XPath 支持
// - 节点属性读取
// - 命名空间处理
INI 配置获取
ConfigUtil.GetIniConfig()

// 功能:
// - 读取 INI 格式配置文件
// - 节(section)支持
// - 键值对解析
// - 注释处理

🚀 完整使用示例

1. 基础配置获取

// 获取简单配置值
var appName = AppSettings.app("AppName");
var version = AppSettings.GetValue("Version");

// 获取嵌套配置
var connectionString = AppSettings.app("ConnectionStrings", "Default");
var logLevel = AppSettings.app("Logging", "LogLevel", "Default");

// 获取整个配置节点
var jwtSection = AppSettings.GetSection("Jwt");
var issuer = jwtSection["Issuer"];
var expiryMinutes = jwtSection["ExpiryMinutes"];

2. 强类型配置绑定

定义配置类
public class DatabaseConfig
{
    public string ConnectionString { get; set; }
    public int Timeout { get; set; }
    public bool EnableLogging { get; set; }
}

public class JwtConfig
{
    public string Issuer { get; set; }
    public string Audience { get; set; }
    public string SecurityKey { get; set; }
    public int ExpiryMinutes { get; set; }
}

public class RedisConfig
{
    public string ConnectionString { get; set; }
    public string InstanceName { get; set; }
    public int DefaultDatabase { get; set; }
}
使用强类型配置
// 方式一:使用 app<T> 方法
var dbConfig = AppSettings.app<DatabaseConfig>("Database");
var jwtConfig = AppSettings.app<JwtConfig>("Jwt");

// 方式二:使用 GetConfig<T> 方法
var redisConfig = AppSettings.GetConfig<RedisConfig>("Redis");
var emailConfig = AppSettings.GetConfig<EmailConfig>("Email");

// 方式三:使用 GetAppSettings<T> 方法
var awsConfig = AppSettings.GetAppSettings<AwsConfig>("AWS");

3. 数据库连接管理

public class DatabaseService
{
    private readonly string _connectionString;
    
    public DatabaseService()
    {
        // 获取默认连接字符串
        _connectionString = AppSettings.ConnectionStrings("DefaultConnection");
        
        // 或者获取特定连接字符串
        var readOnlyConn = AppSettings.ConnectionStrings("ReadOnlyConnection");
    }
    
    public void Connect()
    {
        using var connection = new SqlConnection(_connectionString);
        connection.Open();
        // 数据库操作...
    }
}

4. 多环境配置支持

配置文件结构
appsettings.json
appsettings.Development.json
appsettings.Production.json
appsettings.Staging.json
环境特定配置获取
public class ConfigurationService
{
    public T GetEnvironmentConfig<T>() where T : class, new()
    {
        var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
        var configKey = $"AppSettings:{environment}";
        
        return AppSettings.GetAppSettings<T>(configKey) ?? new T();
    }
    
    public string GetConnectionStringForEnvironment()
    {
        var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
        var connectionStringKey = $"{environment}Connection";
        
        return AppSettings.ConnectionStrings(connectionStringKey);
    }
}

5. 配置验证和默认值

public class ConfigValidator
{
    public static void ValidateEssentialConfig()
    {
        // 检查必要配置是否存在
        var essentialKeys = new[] { "Database:ConnectionString", "Jwt:SecurityKey", "App:Name" };
        
        foreach (var key in essentialKeys)
        {
            var value = AppSettings.GetValue(key.Split(':'));
            if (string.IsNullOrEmpty(value))
            {
                throw new InvalidOperationException($"Essential configuration missing: {key}");
            }
        }
    }
    
    public static T GetConfigWithDefaults<T>() where T : class, new()
    {
        var config = AppSettings.GetAppSettings<T>("AppSettings") ?? new T();
        
        // 设置默认值
        if (config is DatabaseConfig dbConfig && string.IsNullOrEmpty(dbConfig.ConnectionString))
        {
            dbConfig.ConnectionString = "Server=localhost;Database=default;Trusted_Connection=true;";
        }
        
        return config;
    }
}

6. 多格式配置文件示例

JSON 配置使用
var jsonConfig = ConfigUtil.GetJsonConfig();
// 假设有 appsettings.json 文件
var appName = jsonConfig["App:Name"];
var version = jsonConfig["App:Version"];
XML 配置使用
var xmlConfig = ConfigUtil.GetXmlConfig();
// 假设有 config.xml 文件
var setting1 = xmlConfig["/configuration/appSettings/add[@key='Setting1']/@value"];
INI 配置使用
var iniConfig = ConfigUtil.GetIniConfig();
// 假设有 config.ini 文件
var databaseHost = iniConfig["Database:Host"];
var databasePort = iniConfig["Database:Port"];

7. 配置变更监控

public class ConfigMonitor
{
    private readonly Timer _timer;
    private string _lastConfigHash;
    
    public ConfigMonitor()
    {
        _timer = new Timer(CheckConfigChanges, null, TimeSpan.Zero, TimeSpan.FromMinutes(1));
    }
    
    private void CheckConfigChanges(object state)
    {
        var currentConfig = AppSettings.GetValue("DynamicSettings");
        var currentHash = CalculateHash(currentConfig);
        
        if (_lastConfigHash != currentHash)
        {
            _lastConfigHash = currentHash;
            OnConfigChanged?.Invoke(this, EventArgs.Empty);
        }
    }
    
    public event EventHandler OnConfigChanged;
    
    private string CalculateHash(string input)
    {
        using var sha256 = SHA256.Create();
        var bytes = Encoding.UTF8.GetBytes(input);
        var hash = sha256.ComputeHash(bytes);
        return Convert.ToBase64String(hash);
    }
}

🎯 设计特点

1. 灵活的配置源支持

  • JSON、XML、INI 多格式支持
  • 环境变量覆盖
  • 自定义配置目录扫描
  • 配置忽略机制

2. 多种使用方式

  • 静态方法直接调用
  • 强类型配置绑定
  • 节点级配置获取
  • 连接字符串专门处理

3. 类型安全

  • 泛型支持
  • 自动类型转换
  • 空值安全处理

4. 企业级特性

  • 多环境配置支持
  • 配置验证机制
  • 配置变更监控
  • 默认值处理

5. 易用性

  • 简单的 API 设计
  • 直观的方法命名
  • 丰富的使用示例
  • 灵活的配置组织

这个配置组件为 .NET 应用程序提供了完整的配置管理解决方案,支持从简单的键值对到复杂的强类型配置对象,满足各种规模的应用程序需求。

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages (9)

Showing the top 5 NuGet packages that depend on RuoVea.ExConfig:

Package Downloads
RuoVea.ExFilter

注入 进行全局的异常日志收集、执行操作日志、参数验证,支持简体中文、繁体中文、粤语、日语、法语、英语.services.ExceptionSetup();// 注入 全局错误日志处 services.ExceptionSetup(ExceptionLog actionOptions);// 注入 全局错误日志处 services.ExceptionSetup(builder.Configuration.GetSection("AopOption:ExceptionLog"));// 注入 全局错误日志处 services.RequestActionSetup();// 注入 请求日志拦截 [执行操作日志、参数验证 ] services.RequestActionSetup(RequestLog actionOptions);// 注入 请求日志拦截 [执行操作日志、参数验证 ] services.RequestActionSetup(builder.Configuration.GetSection("AopOption:RequestLog"));// 注入 请求日志拦截 [执行操作日志、参数验证 ] services.ResourceSetup();//对资源型信息进行过滤 services.ResultSetup();//对结果进行统一 services.ApISafeSetup(AppSign actionOptions);//接口安全校验 services.ApISafeSetup(builder.Configuration.GetSection("AopOption:AppSign"));//接口安全校验 services.ApISignSetup(AppSign actionOptions);//签名验证 ( appKey + signKey + timeStamp + data ); services.ApISignSetup(builder.Configuration.GetSection("AopOption:AppSign"));//签名验证 ( appKey + signKey + timeStamp + data ); services.AddValidateSetup();//模型校验 services.AddUiFilesZipSetup();//将前端UI压缩文件进行解压 不进行接口安全校验 -> NonAplSafeAttribute 不签名验证 -> NonAplSignAttribute 不进行全局的异常日志收集 -> NonExceptionAttribute 不对资源型信息进行过滤 -> NonResourceAttribute 不对结果进行统一 -> NonRestfulResultAttribute

RuoVea.ExCache

Redis缓存 内存缓存

RuoVea.ExJwtBearer

Jwt 授权验证拓展插件。声名:IJwtHelper _jwtHelper,支持简体中文、繁体中文、粤语、日语、法语、英语.添加验权:services.AddAuthenticationSetup(enableGlobalAuthorize: true);添加鉴权:services.AddAuthorizationSetup.MyPermission.(enableGlobalAuthorize: true);添加Jwt加密:services.AddJwtSetup();

RuoVea.ExPws

集成加密工具类 AES、 Base64、DESC、HMACSHA1、HMACSHA256、HMACSHA384、HMACSHA512、MD5、JsMD5、RSA、SHA1、SHA256、SHA384、、SHA512 加密算法; 字符串加密拓展 ToMD5Encrypt、ToAESEncrypt、ToAESDecrypt、ToDESCEncrypt、ToDESCDecrypt、ToRSAEncrpyt、ToRSADecrypt,支持简体中文、繁体中文、粤语、日语、法语、英语.

RuoVea.ExWeb

CorsUrls、IPLimit、SafeIps、Jwt 配置

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
10.0.0 180 1/12/2026
9.0.0 976 7/25/2025
8.0.0.1 7,565 4/23/2025
8.0.0 2,094 3/12/2024
7.0.0.1 8,627 4/23/2025
7.0.0 2,388 3/12/2024
6.0.1.7 10,887 4/23/2025
6.0.1.6 10,234 3/12/2024
6.0.1.5 238 3/12/2024
6.0.1.4 242 3/12/2024
6.0.1.3 852 1/26/2024
6.0.1.2 242 1/26/2024
6.0.1.1 1,030 11/19/2023
6.0.1 6,058 2/16/2022
6.0.0 5,152 2/9/2022
5.0.19.2 1,066 4/23/2025
5.0.19.1 728 8/28/2024
5.0.19 1,016 3/22/2022
5.0.8 1,409 11/19/2021
5.0.7 2,932 11/5/2021
Loading failed