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

.NET MAUI Blazor桌面应用:如何获取传入应用的启动参数

在.NET MAUI Blazor中获取应用启动参数

要获取.NET MAUI Blazor应用的启动参数,需要分两步:先在MAUI层面捕获参数,再传递给Blazor组件/逻辑使用,以下是具体实现:

1. 在MAUI启动逻辑中捕获启动参数

打开项目中的MauiProgram.cs,通过平台特定代码获取启动参数,并将其注册为全局服务,方便Blazor端注入调用:

using Microsoft.Maui.LifecycleEvents;
using System;

var builder = MauiApp.CreateBuilder();
builder
    .UseMauiApp<App>()
    .ConfigureFonts(fonts =>
    {
        fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
    });

// 存储启动参数的变量
string[] launchArgs = Array.Empty<string>();

// 根据不同平台获取启动参数
#if WINDOWS
// Windows平台直接读取命令行参数
launchArgs = Environment.GetCommandLineArgs();
#elif ANDROID
// Android平台从Intent中读取参数(需提前配置Intent Filter)
var intent = Android.App.Application.Context.Intent;
if (intent?.Extras != null)
{
    // 示例:读取自定义的参数数组,也可根据实际需求解析Intent的Data或其他Extra
    launchArgs = intent.Extras.GetStringArray("launchArgs") ?? Array.Empty<string>();
}
#elif IOS || MACCATALYST
// iOS/Mac Catalyst平台从LaunchOptions中解析参数
var launchOptions = UIKit.UIApplication.SharedApplication.LaunchOptions;
if (launchOptions != null)
{
    // 示例:将LaunchOptions的键值对转为字符串数组
    launchArgs = launchOptions.Select(kv => $"{kv.Key}={kv.Value}").ToArray();
}
#endif

// 将启动参数注册为单例服务,供Blazor端注入
builder.Services.AddSingleton(launchArgs);

// 配置Blazor相关服务
builder.Services.AddMauiBlazorWebView();
#if DEBUG
builder.Services.AddBlazorWebViewDeveloperTools();
#endif

var app = builder.Build();
await app.RunAsync();

2. 在Blazor中使用启动参数

在Blazor组件中注入使用

直接在Razor组件中注入参数数组,即可展示或处理:

@inject string[] LaunchArgs

<div>
    <h3>应用启动参数</h3>
    @if (LaunchArgs.Length > 0)
    {
        <ul>
            @foreach (var arg in LaunchArgs)
            {
                <li>@arg</li>
            }
        </ul>
    }
    else
    {
        <p>未传入启动参数</p>
    }
</div>

在Blazor的Program.cs中使用

如果需要在Blazor启动初始化时使用参数,可通过服务容器获取:

var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.RootComponents.Add<HeadOutlet>("head::after");

// 从服务容器中获取启动参数
var launchArgs = builder.Services.BuildServiceProvider().GetRequiredService<string[]>();

// 此处可根据参数做初始化配置,比如注册服务、设置全局变量等

await builder.Build().RunAsync();

注意事项

  • Android平台:如果是通过外部应用启动,需在AndroidManifest.xml中配置对应的Intent Filter,才能正确接收参数。
  • Windows平台:Environment.GetCommandLineArgs()的第一个元素是应用自身的路径,后续元素才是传入的参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:29:38