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

.NET Core控制台程序中ConfigurationBuilder构造时引发FileNotFoundException

解决.NET Core控制台应用中ConfigurationBuilder的FileNotFoundException问题

嘿,我碰到过一模一样的问题!这个异常看似是找不到文件,但本质是缺少必要的NuGet依赖包,跟appsettings.json本身存在与否关系不大,咱们一步步来解决:

问题根源

SetBasePath和AddJsonFile这些扩展方法依赖Microsoft.Extensions.FileProviders.Physical组件,你的项目里要么没安装这个包,要么包的版本跟其他Microsoft.Extensions.Configuration系列包不匹配,导致运行时找不到对应的程序集。

解决步骤

1. 安装正确的NuGet包

最简单的方式是安装Microsoft.Extensions.Configuration.Json——这个包会自动引入Microsoft.Extensions.FileProviders.Physical等依赖,不用单独安装。

  • Package Manager Console执行:
    Install-Package Microsoft.Extensions.Configuration.Json -Version 2.2.0
    
  • .NET CLI执行:
    dotnet add package Microsoft.Extensions.Configuration.Json --version 2.2.0
    

    注意:如果你的项目用的是其他.NET Core版本(比如3.1、5.0等),把版本号改成对应版本即可,务必确保所有Microsoft.Extensions.*包版本一致。

2. 确保配置文件复制到输出目录

虽然你说当前目录有appsettings.json,但控制台应用运行时的工作目录可能不是项目根目录,所以要确保文件被复制到输出文件夹:

  • 右键项目里的appsettings.json → 属性
  • 把“复制到输出目录”设置为如果较新则复制或始终复制

3. 优化你的代码(可选但推荐)

给AddJsonFile加上optional参数,这样如果文件真的找不到时能给出更清晰的提示,避免莫名崩溃:

var builder = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); // optional:false会在文件不存在时抛出明确异常

IConfiguration config = builder.Build();
// 可以加个测试输出验证配置是否加载成功
Console.WriteLine($"Loaded config: {config.GetDebugView()}");

验证

安装完包、设置好文件属性后,重新生成项目并运行,应该就能正常加载配置了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:52:38