能否将appsettings.json嵌入资源并通过IConfiguration读取?
问题解答:嵌入appsettings.json后能否通过默认IConfiguration使用?
可以实现,但默认的IConfiguration不会自动读取嵌入资源中的appsettings.json,需要手动在配置构建流程中添加嵌入资源的读取逻辑。
具体步骤:
将appsettings.json设置为嵌入资源
右键项目中的appsettings.json文件 → 属性 → 把「生成操作」改为「嵌入的资源」。注意资源的完整名称格式为[项目命名空间].appsettings.json,可在文件属性的「完整路径」中确认命名空间部分。修改配置构建逻辑
在Program.cs中扩展配置构建器,添加嵌入资源的读取流:var builder = WebApplication.CreateBuilder(args); // 读取嵌入的appsettings.json var assembly = typeof(Program).Assembly; using var configStream = assembly.GetManifestResourceStream("YourProjectNamespace.appsettings.json"); if (configStream != null) { builder.Configuration.AddJsonStream(configStream); } // 后续正常构建应用 var app = builder.Build(); // ... 业务代码与中间件配置 app.Run();
补充说明:
- 务必将代码中的
YourProjectNamespace替换为实际的项目命名空间,否则GetManifestResourceStream会返回null,无法读取配置。 - 嵌入后的配置会被打包进exe文件中,发布时无需额外携带json文件,满足单文件分发需求。
- 如果有多环境配置文件(如
appsettings.Development.json),可重复上述逻辑添加对应的嵌入资源流。
内容的提问来源于stack exchange,提问作者boop
相关产品推荐
相关产品推荐

