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

使用C# ConfigurationBuilder读取JSON获空值,文件存在却提示未找到

解决控制台应用读取JSON配置文件时的文件未找到问题

问题分析

你遇到的空值问题根源是程序运行时找不到configuration.json文件——即便文件在项目目录中存在,默认情况下VS不会自动将其复制到程序的输出目录(bin/Debug或bin/Release),导致ConfigurationBuilder加载不到文件,自然读不到配置值。另外代码里还有一处拼写错误:Console.WritLine应该是Console.WriteLine,这会导致编译错误。

解决方案

1. 配置文件复制设置

右键项目中的configuration.json文件 → 属性:

  • 将复制到输出目录设置为 如果较新则复制 或 始终复制
  • 确保生成操作设置为 内容

这样每次编译时,VS会把配置文件同步到输出目录,程序就能找到它了。

2. 验证当前工作目录

可以在代码里先打印当前工作目录,确认程序运行的路径是否正确:

Console.WriteLine("当前工作目录:" + Directory.GetCurrentDirectory());

如果输出的路径不是项目的输出目录,可能需要手动指定配置文件的绝对路径,或者调整运行时的工作目录。

3. 修正代码拼写错误

把所有Console.WritLine改为Console.WriteLine,否则会出现编译失败。

修正后的完整代码示例

public class Program
{
    public IConfigurationRoot Configuration { get; set; }
    public Program()
    {
        // 先打印当前目录,排查路径问题
        Console.WriteLine("当前工作目录:" + Directory.GetCurrentDirectory());
        
        Configuration = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("configuration.json", optional: false, reloadOnChange: true) // 把optional设为false,方便快速发现文件未找到问题
            .Build();
    }

    static void Main(string[] args)
    {
        Program p = new Program();
        string one = p.Configuration.GetValue<string>("Configuration:one");
        string two = p.Configuration.GetValue<string>("Configuration:two");
        string three = p.Configuration.GetValue<string>("Configuration:three");
        Console.WriteLine(one);
        Console.WriteLine(two);
        Console.WriteLine(three);
    }
}

额外提示

  • 如果文件名包含大小写,注意系统是否区分大小写(比如Linux系统),确保代码里的文件名和实际文件名一致。
  • 可以尝试使用AddJsonFile的重载,传入绝对路径测试,确认文件是否能被正确加载:
.AddJsonFile(@"C:\YourProjectPath\configuration.json", optional: false)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:50:39