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

.NET Maui安卓模拟器中appsetting.json目录配置问题求助

针对.NET Maui安卓端启动异常的排查与解决方案

一、配置文件的正确处理

  • 将appsettings.json放在项目根目录,右键设置文件属性:
    • 生成操作:Embedded resource
    • 复制到输出目录:如果较新则复制
  • 若选择放到Resources\Raw目录,需将生成操作改为MauiAsset,读取时用FileSystem.OpenAppPackageFileAsync方法

二、适配安卓的配置读取代码

Windows端直接读取文件的逻辑不适配安卓,需从嵌入资源读取,示例代码:

var assembly = typeof(App).GetTypeInfo().Assembly;
using var stream = assembly.GetManifestResourceStream("你的项目命名空间.appsettings.json");
var config = new ConfigurationBuilder()
    .AddJsonStream(stream)
    .Build();

可通过assembly.GetManifestResourceNames()打印所有嵌入资源名称,确认配置文件的完整命名(命名空间+文件名)是否正确。

三、Microsoft Graph安卓端专属配置

  • 在AndroidManifest.xml添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  • 配置OAuth重定向URI与Intent过滤器:
    重定向URI需设置为msal{你的客户端ID}://auth,并在AndroidManifest.xml中添加:
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="msal{你的客户端ID}" />
</intent-filter>

四、定位具体异常原因

  • 打开Visual Studio的输出窗口,切换到Debug输出,查看安卓启动时的完整异常栈
  • 在App.xaml.cs的OnStart方法中添加捕获逻辑:
protected override void OnStart()
{
    try
    {
        // 你的初始化代码(配置读取、Graph客户端创建等)
    }
    catch (Exception ex)
    {
        System.Diagnostics.Debug.WriteLine($"启动异常:{ex.Message}\n{ex.StackTrace}");
    }
}

五、验证嵌入资源加载状态

添加代码确认配置文件是否被正确嵌入:

var assembly = typeof(App).GetTypeInfo().Assembly;
var resourceNames = assembly.GetManifestResourceNames();
foreach (var name in resourceNames)
{
    System.Diagnostics.Debug.WriteLine($"嵌入资源:{name}");
}

若未找到目标配置文件,检查文件属性的生成操作是否设置正确,或命名空间是否匹配。


内容的提问来源于stack exchange,提问作者Marcel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 02:52:13