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

在Visual Studio的C#项目中读取appsettings.json值的方法及多不可重命名appsettings.json文件的解决方案

解决C#项目中读取同名appsettings.json的问题(通过相对路径)

当然可以通过相对路径实现需求!针对你从tst目录访问src/Api/Properties/appsettings.json的场景,我给你两种实用的解决方案,完全不需要重命名任何文件:

方法一:手动构建配置时指定相对路径

这是最直接的方式,通过ConfigurationBuilder明确指向目标配置文件的相对路径:

步骤1:安装必要的NuGet包

确保你的测试项目(tst目录下的项目)已经安装了以下包:

  • Microsoft.Extensions.Configuration
  • Microsoft.Extensions.Configuration.Json

步骤2:编写加载配置的代码

在需要读取配置的地方,用相对路径定位到目标文件:

using Microsoft.Extensions.Configuration;
using System.IO;

// 构建配置对象
var configBuilder = new ConfigurationBuilder()
    // 先定位到解决方案根目录(根据你的输出目录调整层级,这里假设测试项目输出在bin/Debug/netX.x下,需要回退3级)
    .SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "../../../"))
    // 指向目标appsettings.json的相对路径
    .AddJsonFile("src/Api/Properties/appsettings.json", optional: false, reloadOnChange: true);

IConfiguration config = configBuilder.Build();

// 示例:读取配置值
var apiUrl = config["ApiSettings:BaseUrl"];
var connectionString = config.GetConnectionString("DefaultConnection");

路径调试技巧

如果不确定相对路径是否正确,可以先打印当前目录和解析后的绝对路径来验证:

var currentDir = Directory.GetCurrentDirectory();
var targetPath = Path.GetFullPath("../../../src/Api/Properties/appsettings.json", currentDir);
Console.WriteLine($"当前目录:{currentDir}");
Console.WriteLine($"目标文件绝对路径:{targetPath}");

根据输出的绝对路径调整../../../的层级,直到指向正确的文件。

方法二:通过项目引用同步配置文件(避免路径层级问题)

如果你不想处理复杂的相对路径层级,可以通过项目引用将目标配置文件同步到测试项目的输出目录:

  1. 在测试项目中右键 → 添加 → 现有项
  2. 导航到src/Api/Properties/appsettings.json,选中文件后,点击添加按钮旁边的下拉箭头,选择添加为链接
  3. 在测试项目中找到这个链接文件,右键 → 属性:
    • 将复制到输出目录设置为如果较新则复制
    • 将生成操作保持为内容

之后你就可以在代码中直接用文件名加载(因为文件已经被复制到测试项目的输出目录了),不过注意如果有多个同名的appsettings.json,这种方式会覆盖,所以更推荐方法一。

关键注意事项

  • 确保目标appsettings.json的生成操作设置为内容,否则文件不会被识别为可访问的项目资源
  • 如果是.NET Framework项目,配置加载方式略有不同,但核心思路都是通过相对路径定位文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 21:17:31