.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
相关产品推荐
相关产品推荐

