从.NET Aspire仪表板启动.NET MAUI应用至Android模拟器失败求助
问题概述
配置了集成Aspire 13的.NET 10 MAUI应用,启动Aspire项目并打开仪表板后,Android模拟器已正常运行,但无法将应用部署到模拟器,抛出hostpolicy.dll未找到、runtimeconfig.json未指定框架的错误。
复现步骤
- 启动Visual Studio
- 创建名为
MauiApp1的新.NET MAUI App项目 - 选择.NET 10作为目标框架
- 勾选“加入.NET Aspire编排”,指定Aspire 13版本
- 项目创建完成后运行
MauiApp1.AppHost项目 - 待Aspire仪表板打开后,等待
mauiapp1资源启动 - 若模拟器未启动则手动启动Android模拟器
- 尝试启动
mauiapp1-android-emulator资源
尝试过的两种配置
版本1:默认AppHost配置
var builder = DistributedApplication.CreateBuilder(args); builder.AddProject<Projects.MauiApp1>("mauiapp1"); builder.Build().Run();
版本2:使用AddMauiProject方法配置
先在MauiApp1.AppHost项目中添加包引用:
<PackageReference Include="Aspire.Hosting.Maui" Version="13.0.0-preview.1.25560.3" />
修改AppHost.cs代码:
var builder = DistributedApplication.CreateBuilder(args); var mauiApp = builder.AddMauiProject("mauiapp1", @"../MauiApp1/MauiApp1.csproj"); mauiApp.AddAndroidEmulator() .WithOtlpDevTunnel(); builder.Build().Run();
错误信息
Successfully executed command 'resource-start'.
A fatal error was encountered. The library 'hostpolicy.dll' required to execute the application was not found in 'C:\MauiApp1\MauiApp1\bin\Debug\net10.0-android'.
Failed to run as a self-contained app.
- The application was run as a self-contained app because 'C:\MauiApp1\MauiApp1\bin\Debug\net10.0-android\MauiApp1.runtimeconfig.json' did not specify a framework.
测试环境
- Visual Studio版本:2022 Community、2026预览版(社区版)
- Android模拟器:Pixel 7 API36及其他多款模拟器
解决方案
调整MAUI项目的自包含配置
打开MAUI项目的.csproj文件,确认<SelfContained>设置为false:<PropertyGroup> <SelfContained>false</SelfContained> </PropertyGroup>Android MAUI应用默认应为框架依赖模式,自包含模式会导致runtimeconfig.json缺失框架信息,引发Aspire编排启动失败。
修复runtimeconfig.json文件
清理MAUI项目的bin和obj目录后重新生成项目。若生成的MauiApp1.runtimeconfig.json仍无框架配置,手动补充:{ "runtimeOptions": { "tfm": "net10.0-android", "framework": { "name": "Microsoft.NETCore.App", "version": "10.0.0" } } }确保包版本兼容性
确认Aspire.Hosting.Maui包版本与.NET 10、Aspire 13的预览版本完全匹配,避免版本不一致导致的编排逻辑异常。预验证模拟器部署
先手动将MAUI应用部署到Android模拟器,确认应用能正常启动后,再通过Aspire仪表板启动mauiapp1-android-emulator资源,排除模拟器环境本身的问题。
内容的提问来源于stack exchange,提问作者James D

