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

如何将MSTest项目的app.config配置迁移到.NET 5并共享连接字符串

实现共享连接字符串的可行方案

方案1:共享配置文件+生成事件自动同步

该方案和你原先共享ConnectionInfo.config的逻辑完全一致,适配ASP.NET Core的配置体系:

  • 在解决方案根目录创建公共配置文件,按环境命名为SharedConnectionStrings.<环境标识>.json,统一存储各环境的连接字符串,格式和Web API项目的appsettings.json中连接字符串节点保持一致:
{
  "ConnectionStrings": {
    "MyConnectionString": "the connection string"
  }
}
  • Web API项目和测试项目都通过添加为链接的方式引入所有公共配置文件:文件选择窗口点击「添加」按钮旁的下拉箭头,选择「添加为链接」即可,避免多份重复文件。
  • 分别在两个项目的属性→生成事件→预生成事件中添加命令,根据当前选定的运行/发布环境,将对应环境的公共配置文件复制到输出目录:
copy /Y "$(SolutionDir)SharedConnectionStrings.$(ConfigurationName).json" "$(TargetDir)appsettings.shared.json"
  • Web API项目在启动类中通过内置配置源加载共享配置即可,不需要额外解析逻辑:
config.AddJsonFile("appsettings.shared.json", optional: false, reloadOnChange: true);
  • 测试项目直接使用ASP.NET Core内置的ConfigurationBuilder加载输出目录下的共享配置:
var config = new ConfigurationBuilder()
    .AddJsonFile("appsettings.shared.json")
    .Build();
string connectionString = config.GetConnectionString("MyConnectionString");
_databaseManager = new DatabaseManager(connectionString);

方案2:环境变量注入(适配CI/CD场景)

如果你的环境切换通过环境变量控制,可以直接使用ASP.NET Core内置的环境变量配置优先级特性:

  • 系统或启动项中设置ASPNETCORE_ENVIRONMENT环境变量指定当前环境
  • 连接字符串直接设置为环境变量,命名格式为ConnectionStrings__MyConnectionString(双下划线为层级分隔符,内置配置系统自动识别)
  • Web API项目不需要额外修改,默认配置源已经包含环境变量,会自动读取
  • 测试项目运行时会继承当前进程的环境变量,直接用内置ConfigurationBuilder即可读取,不需要加载任何物理配置文件

方案3:保留原XML配置兼容旧逻辑

如果不想修改测试项目原有ConfigurationManager读取逻辑,可以继续沿用原先的ConnectionInfo.config机制:

  • Web API项目通过内置的AddXmlFile配置源直接加载ConnectionInfo.config,ASP.NET Core配置系统原生支持XML格式:
config.AddXmlFile("ConnectionInfo.config", optional: false, reloadOnChange: true);
  • 后续读取连接字符串和json配置逻辑完全一致,调用GetConnectionString("MyConnectionString")即可正常读取XML节点内容
  • 测试项目原有ConfigurationManager读取逻辑不需要任何修改,和.NET Framework下的运行表现完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:15:05