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

.NET MAUI Android应用中appsettings.json未复制到设备的求助

.NET MAUI Android中appsettings.json未加载问题的解决方法

核心问题说明

嵌入式资源是打包进程序集的,不会以独立文件形式出现在设备的文件系统中,所以你在/data/data/com.companyname.mauiapp1/files/.__override__里找不到是正常的,不需要在那里查找,只需通过代码读取嵌入的资源流即可。

具体修复步骤

1. 确认嵌入式资源的正确名称

嵌入式资源的名称规则是项目默认命名空间.文件名,你可以通过以下代码打印所有嵌入式资源名称,找到你的appsettings.json对应的正确路径:

var assembly = System.Reflection.Assembly.GetExecutingAssembly();
foreach (var resName in assembly.GetManifestResourceNames())
{
    System.Diagnostics.Debug.WriteLine($"嵌入式资源名称:{resName}");
}

运行后查看输出窗口,找到类似MauiApp1.appsettings.json的条目,这就是你需要传入GetManifestResourceStream的参数。

2. 正确设置文件属性

  • 将appsettings.json放在项目根目录
  • 在属性窗口中设置:
    • Build Action:Embedded Resource
    • Copy to Output Directory:Copy Always

3. 修正配置加载代码

根据第一步得到的正确资源名称,修改你的配置加载代码:

var assembly = System.Reflection.Assembly.GetExecutingAssembly();
using var stream = assembly.GetManifestResourceStream("MauiApp1.appsettings.json"); // 替换为你实际的资源名称
if (stream == null)
{
    System.Diagnostics.Debug.WriteLine("未找到appsettings.json嵌入式资源");
    return;
}
var config = new Microsoft.Extensions.Configuration.ConfigurationBuilder()
    .AddJsonStream(stream)
    .Build();
builder.Configuration.AddConfiguration(config);

额外提示

如果尝试将文件放在Resources/Raw目录,Build Action应设为MauiAsset,读取方式会改为通过FileSystem.OpenAppPackageFileAsync,但嵌入式资源的方式更匹配你当前的代码逻辑。

内容的提问来源于stack exchange,提问作者D. Kermott

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 05:18:17