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

.NET MAUI迁移后ShellItemRenderer和TabbedPageRenderer报错如何修复?

解决.NET MAUI迁移后Android构建的渲染器与依赖包错误

1. 替换旧自定义渲染器代码

  • 检查项目中是否存在继承自ShellItemRenderer或TabbedPageRenderer的自定义渲染器,MAUI已弃用Xamarin Forms的旧渲染器体系,改用Handler模式替代。
  • 若需保留自定义导航逻辑,替换为MAUI对应的Handler:
    • ShellItem对应ShellItemHandler
    • TabbedPage对应TabbedPageHandler
  • 移除旧渲染器中实现OnItemSelectedListener的代码,改用MAUI Handler的Mapper或PlatformView事件处理逻辑,比如监听TabbedPage的CurrentPageChanged事件,而非Android原生的onNavigationItemSelected。

2. 清理并统一依赖包

  • 彻底移除所有Xamarin开头的AndroidX/Material包(如Xamarin.Google.Android.Material、Xamarin.AndroidX.AppCompat.Resources),MAUI的Microsoft.Maui.Controls已内置兼容的.NET版本依赖,无需手动引用Xamarin版包。
  • 打开项目的.csproj文件,删除所有Xamarin相关的<PackageReference>节点,确保仅保留MAUI官方包,且所有MAUI包版本一致(推荐使用最新稳定版)。
  • 若需AppCompat资源,添加.NET版本的Microsoft.AndroidX.AppCompat.Resources包,而非Xamarin版。

3. 清理缓存并重建项目

  • 删除项目根目录下的bin和obj文件夹,彻底清除编译缓存。
  • 清除NuGet缓存:执行命令 dotnet nuget locals all --clear,或通过Visual Studio工具菜单→NuGet包管理器→管理解决方案的NuGet包→设置→清除缓存。
  • 重启Visual Studio,重新构建Android项目。

4. 检查Android项目配置

  • 确保Android项目的目标框架为.NET 7或更高(MAUI最低支持.NET 6,推荐使用较新版本)。
  • 在项目属性中设置目标Android版本为API 33及以上。
  • 打开AndroidManifest.xml,移除所有Xamarin Forms自定义渲染器的注册配置,改用MAUI Handler的注册方式(在MauiProgram.cs中通过ConfigureMauiHandlers注册)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 15:01:09