.NET 9 MAUI Blazor Hybrid APK构建失败(.NET 8下可正常生成)
.NET 9 MAUI Blazor Hybrid APK构建失败(.NET 8下可正常生成)
我之前升级项目到.NET 9时也碰到过完全一样的问题——.NET 8下打包APK丝滑得很,结果.NET 9一跑就报project.assets.json doesn't have a target for 'net9.0/android-arm64'这个错误,折腾了好几天才摸清楚几个有效的解决思路,给你分享下:
先排查项目框架配置的问题
你提到把三个项目(MAUI、Shared、WEB)都加了全平台的TargetFrameworks,这大概率是问题根源!其实只有MAUI项目需要包含移动端框架,Shared类库和WEB项目根本不需要:
- MAUI项目的.csproj保留完整配置:
<TargetFrameworks>net9.0;net9.0-android;net9.0-ios;net9.0-maccatalyst</TargetFrameworks> - Shared项目只需要保留桌面/通用框架:
<TargetFrameworks>net9.0</TargetFrameworks> - WEB项目同理,不管是Blazor Server还是WebAssembly,都只保留
net9.0即可,加移动端框架只会让依赖解析混乱,导致assets.json生成异常。
彻底清理并重建项目资产
有时候旧的资产文件残留会导致.NET 9的解析逻辑出错,按这个步骤来:
- 手动删除所有项目下的
bin和obj文件夹(别心疼,这些都是临时文件) - 运行
dotnet clean确保清理干净 - 针对MAUI项目单独执行还原命令:
dotnet restore YourMauiProjectName.csproj,不要直接在解决方案根目录restore,多项目场景下容易出现依赖冲突 - 最后再执行打包命令:
dotnet publish -f net9.0-android -c Release -p:AndroidPackageFormat=apk
明确指定运行时标识符再打包
.NET 9对移动端打包的默认架构解析好像有点小问题,你可以在命令里直接指定arm64架构试试:
dotnet publish -f net9.0-android -c Release -p:AndroidPackageFormat=apk -p:RuntimeIdentifier=android-arm64
这样能强制让编译器生成对应架构的目标配置,避免assets.json找不到对应项。
重新校验.NET 9 Android Workload
虽然你说workloads是最新的,但还是建议重新安装一次Android workload,避免安装过程中出现的损坏:
- 先卸载现有Android workload:
dotnet workload uninstall android - 安装稳定版的.NET 9 Android workload:
dotnet workload install android - 用
dotnet workload list确认Android workload已正常安装且版本为.NET 9.x
如果以上方法都试过还是不行,记得检查所有NuGet包的版本,确保没有残留的.NET 8专属包,所有依赖都要升级到兼容.NET 9的版本。
内容来源于stack exchange
相关产品推荐
相关产品推荐

