You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让.NET类库同时兼容appsettings.json与app.config配置读取?

统一读取不同配置文件的实现方案

完全可以通过统一代码实现,核心是利用.NET配置系统的扩展性,让两种应用的IConfiguration实例正确加载对应配置源,共享类库仅依赖IConfiguration接口即可,无需关心底层配置文件类型。

1. 共享类库保持原有逻辑

共享类库中的数据库助手类无需修改,继续依赖IConfiguration并使用GetConnectionString方法读取配置:

public class DbHelper
{
    private readonly string _connectionString;

    public DbHelper(IConfiguration configuration)
    {
        _connectionString = configuration.GetConnectionString("DefaultConnection") 
            ?? throw new InvalidOperationException("未找到数据库连接字符串");
    }

    // 数据库操作方法实现
}

注:GetConnectionString是通用方法,只要IConfiguration中存在ConnectionStrings:DefaultConnection节点,无论配置来自哪种文件都能读取。

2. ASP.NET Core应用配置(appsettings.json)

ASP.NET Core默认已自动加载appsettings.json,只需在配置文件中定义连接字符串:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=.;Database=Demo;Trusted_Connection=True;"
  }
}

在Program.cs中注册DbHelper即可:

builder.Services.AddScoped<DbHelper>();

3. .NET Core控制台应用配置(app.config)

控制台应用需手动配置IConfiguration以加载app.config,步骤如下:

  • 安装NuGet包:Microsoft.Extensions.Configuration.ConfigurationManager,该包支持读取传统app.config配置。
  • 在Program.cs中构建IConfiguration:
var configuration = new ConfigurationBuilder()
    .AddConfigurationManager() // 加载app.config中的配置项
    .Build();
  • 配置app.config中的连接字符串节点:
<configuration>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Server=.;Database=Demo;Trusted_Connection=True;" providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>
  • 若使用依赖注入,需注册服务(需安装Microsoft.Extensions.DependencyInjection):
var services = new ServiceCollection();
services.AddSingleton<IConfiguration>(configuration);
services.AddScoped<DbHelper>();

using var serviceProvider = services.BuildServiceProvider();
var dbHelper = serviceProvider.GetRequiredService<DbHelper>();

注:AddConfigurationManager()会自动将app.config中的connectionStrings节点映射到IConfiguration的ConnectionStrings节点下,与appsettings.json的结构对齐。

总结

共享类库无需针对不同应用做适配,只需确保两个应用各自完成IConfiguration的正确配置,就能通过统一的代码读取不同格式配置文件中的连接字符串。

内容的提问来源于stack exchange,提问作者Helic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 16:22:12