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

如何在.NET MAUI中配置appSettings.json并注入IConfiguration

在.NET MAUI中实现类似ASP.NET Core的appSettings.json配置方案

1. 准备appSettings.json文件

在项目根目录添加appSettings.json文件,右键文件设置属性:

  • 生成操作:设为「嵌入的资源」
  • 复制到输出目录:设为「如果较新则复制」

示例配置内容:

{
  "MySettings": {
    "ApiBaseUrl": "https://api.example.com",
    "TimeoutSeconds": 30,
    "EnableLogging": true
  },
  "AppTitle": "MAUI配置示例"
}

2. 封装配置加载扩展方法

创建静态扩展类,把配置加载逻辑封装成可复用的方法:

using Microsoft.Extensions.Configuration;
using System.Reflection;

namespace YourAppNamespace;

public static class MauiConfigurationExtensions
{
    public static MauiAppBuilder ConfigureAppConfiguration(this MauiAppBuilder builder, Type assemblyType, string configFileName)
    {
        var assembly = assemblyType.Assembly;
        // 读取嵌入的配置文件流
        using var stream = assembly.GetManifestResourceStream($"{assembly.GetName().Name}.{configFileName}");
        
        if (stream != null)
        {
            var config = new ConfigurationBuilder()
                .AddJsonStream(stream)
                .Build();
            
            builder.Configuration.AddConfiguration(config);
        }

        return builder;
    }
}

3. 在MauiProgram.cs中调用扩展方法

修改原有CreateMauiApp方法,加入配置加载逻辑:

namespace YourAppNamespace;

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();

        builder
             .UseMauiApp<App>()
             // 调用封装的配置加载方法
             .ConfigureAppConfiguration(typeof(MauiProgram), "appsettings.json")
             .ConfigureFonts(fonts =>
             {
                 fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
                 fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
             });

        builder.Logging.AddDebug();

        // 可选:绑定强类型配置,方便后续注入使用
        builder.Services.Configure<MySettings>(builder.Configuration.GetSection("MySettings"));

        return builder.Build();
    }
}

// 强类型配置类示例
public class MySettings
{
    public string ApiBaseUrl { get; set; } = string.Empty;
    public int TimeoutSeconds { get; set; }
    public bool EnableLogging { get; set; }
}

4. 在应用中使用配置

方式1:直接注入IConfiguration读取

在ViewModel或页面中注入IConfiguration直接读取配置项:

using Microsoft.Extensions.Configuration;

namespace YourAppNamespace.ViewModels;

public class MainViewModel
{
    private readonly IConfiguration _configuration;

    public MainViewModel(IConfiguration configuration)
    {
        _configuration = configuration;
        var appTitle = _configuration["AppTitle"];
        var apiUrl = _configuration.GetSection("MySettings:ApiBaseUrl").Value;
    }
}

方式2:使用强类型配置(推荐)

通过IOptions<MySettings>注入强类型配置,避免硬编码配置键:

using Microsoft.Extensions.Options;

namespace YourAppNamespace.ViewModels;

public class MainViewModel
{
    private readonly MySettings _settings;

    public MainViewModel(IOptions<MySettings> settings)
    {
        _settings = settings.Value;
        var apiUrl = _settings.ApiBaseUrl;
        var timeout = _settings.TimeoutSeconds;
    }
}

内容的提问来源于stack exchange,提问作者Syed Bilal Ali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 15:15:15