如何提升.NET MAUI Android调试构建的加载速度?
问题场景
切换.NET 7后回退至.NET 6,Android调试时出现严重启动延迟:VS完成部署操作后,模拟器在启动页卡顿约1分钟,VS状态栏持续显示"XAML Hot Reload initializing...",输出窗口显示大量程序集从bundles加载失败,转而从/data/data/.../.__override__目录加载。此前正常启动仅需5-10秒,恢复GitHub备份、新建.NET 6 MAUI/Android项目均存在相同问题。
输出窗口片段
19:38:43:988 [monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.Loader.dll 19:38:43:988 Loaded assembly: /data/data/com.prometheansoftworks.myapp/files/.__override__/Xamarin.AndroidX.Loader.dll [External] 19:38:44:270 [monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.Maui.Controls.Compatibility.dll 19:38:44:270 [monodroid-assembly] open_from_bundles: failed to load assembly Plugin.LocalNotification.dll 19:38:44:477 Loaded assembly: /data/data/com.prometheansoftworks.myapp/files/.__override__/Microsoft.Maui.Controls.Compatibility.dll [External] 19:38:44:632 Loaded assembly: /data/data/com.prometheansoftworks.myapp/files/.__override__/Plugin.LocalNotification.dll [External] ...
新建项目启动输出
16:30:52:881 > am start -a "android.intent.action.MAIN" -c "android.intent.category.LAUNCHER" -n "com.companyname.ugg/crc642c019dd32d8d358c.MainActivity" 16:30:52:996 > Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.companyname.ugg/crc642c019dd32d8d358c.MainActivity } 16:30:53:646 Loaded assembly: /data/data/com.companyname.ugg/files/.__override__/Ugg.dll ...
解决思路
清理.NET SDK环境并修复工作负载
卸载.NET 7 SDK,通过VS安装器修复.NET 6移动开发工作负载,确保Android SDK、NDK、MSBuild工具链版本与.NET 6完全匹配,避免多SDK环境的残留冲突。临时禁用XAML Hot Reload排查
右键项目→属性→调试,取消勾选"启用XAML Hot Reload",重新调试启动。若卡顿消失,说明Hot Reload配置在SDK切换后出现异常,可尝试删除项目根目录的.hotreload文件夹后重新启用。彻底清理调试缓存与模拟器状态
- 打开Android设备管理器,选中目标模拟器执行"擦除数据"操作,重置模拟器系统状态;
- 删除项目的
bin/、obj/目录,清理%USERPROFILE%\AppData\Local\Xamarin\下的Android缓存文件; - 重启VS和模拟器后重新构建部署。
验证程序集打包配置
编辑Android项目的.csproj文件,确认以下配置未被修改:<PropertyGroup> <!-- 启用程序集打包到bundles --> <AndroidUseAssemblyStore>true</AndroidUseAssemblyStore> <AndroidEnableAssemblyBinarySerialization>true</AndroidEnableAssemblyBinarySerialization> </PropertyGroup>若配置缺失或被设为
false,会导致程序集无法打包,只能从__override__目录加载,大幅增加启动时间。重置VS调试配置
打开VS"工具→导入和导出设置→重置所有设置",选择"Visual C#开发设置"(或对应移动开发配置),重置调试相关的默认设置,消除SDK切换后残留的配置异常。
内容的提问来源于stack exchange,提问作者XJonOneX

