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

如何为MAUI项目添加跨平台可用的appsettings.json?

解决MAUI中appsettings.json资源流为null的问题

第一步:修正文件的生成操作设置

  • 右键项目里的Resources/Raw/appsettings.json文件,打开属性面板
  • 在高级选项中,将生成操作设为Embedded resource,复制到输出目录设为如果较新则复制

第二步:获取正确的嵌入式资源名称

嵌入式资源的名称格式为[项目命名空间].[文件夹层级].[文件名],而非你写的myassembly.appsettings.json。可以通过以下方法获取准确名称:

  1. 临时添加代码打印所有资源名,运行后查看控制台输出:
    var assembly = Assembly.GetExecutingAssembly();
    foreach (var resName in assembly.GetManifestResourceNames())
    {
        Console.WriteLine(resName);
    }
    
  2. 按规则拼接:比如项目命名空间是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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:10:22