如何为MAUI项目添加跨平台可用的appsettings.json?
解决MAUI中appsettings.json资源流为null的问题
第一步:修正文件的生成操作设置
- 右键项目里的
Resources/Raw/appsettings.json文件,打开属性面板 - 在高级选项中,将生成操作设为
Embedded resource,复制到输出目录设为如果较新则复制
第二步:获取正确的嵌入式资源名称
嵌入式资源的名称格式为[项目命名空间].[文件夹层级].[文件名],而非你写的myassembly.appsettings.json。可以通过以下方法获取准确名称:
- 临时添加代码打印所有资源名,运行后查看控制台输出:
var assembly = Assembly.GetExecutingAssembly(); foreach (var resName in assembly.GetManifestResourceNames()) { Console.WriteLine(resName); } - 按规则拼接:比如项目命名空间是
MyMauiDemo,文件在Resources/Raw下,资源名就是MyMauiDemo.Resources.Raw.appsettings.json
第三步:修改MauiProgram.cs中的代码
替换为正确的资源名,示例代码如下:
using System.Reflection; using Microsoft.Extensions.Configuration; var builder = MauiApp.CreateBuilder(); builder.UseMauiApp<App>(); var assembly = Assembly.GetExecutingAssembly(); // 替换成你实际拿到的资源名 using var stream = assembly.GetManifestResourceStream("MyMauiDemo.Resources.Raw.appsettings.json"); if (stream != null) { var config = new ConfigurationBuilder() .AddJsonStream(stream) .Build(); builder.Configuration.AddConfiguration(config); } // 后续服务注册等逻辑 builder.Services.AddSingleton<MainPage>(); return builder.Build();
跨平台配置扩展提示
- 可针对不同平台添加专属配置文件(如
appsettings.android.json、appsettings.ios.json),同样设置为嵌入式资源,代码中根据平台环境加载对应文件 - 确保项目引用了
Microsoft.Extensions.Configuration.Json包(MAUI默认已包含,若缺失可手动安装)
内容的提问来源于stack exchange,提问作者Tony Nicholls
相关产品推荐
相关产品推荐

