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

.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的解析逻辑出错,按这个步骤来:

  1. 手动删除所有项目下的bin和obj文件夹(别心疼,这些都是临时文件)
  2. 运行dotnet clean确保清理干净
  3. 针对MAUI项目单独执行还原命令:dotnet restore YourMauiProjectName.csproj,不要直接在解决方案根目录restore,多项目场景下容易出现依赖冲突
  4. 最后再执行打包命令: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,避免安装过程中出现的损坏:

  1. 先卸载现有Android workload:dotnet workload uninstall android
  2. 安装稳定版的.NET 9 Android workload:dotnet workload install android
  3. 用dotnet workload list确认Android workload已正常安装且版本为.NET 9.x

如果以上方法都试过还是不行,记得检查所有NuGet包的版本,确保没有残留的.NET 8专属包,所有依赖都要升级到兼容.NET 9的版本。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 07:08:03