.NET MAUI Blazor集成RCL构建Android/iOS报NETSDK1005错误
.NET MAUI Blazor引入Razor类库构建报NETSDK1005错误解决方法
问题描述
基于Razor类库(Razor Class Library, RCL)构建支持Android、iOS平台的.NET MAUI Blazor应用,已按指南完成证书配置。未引入Razor类库时可正常生成构建产物,引入RCL执行构建时触发如下报错:
dotnet\sdk\6.0.400-preview.22301.10\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(267,5): error NETSDK1005: Assets file '\RazorClassLibrary\obj\project.assets.json' doesn't have a target for 'net6.0-android'. Ensure that restore has run and that you have included 'net6.0-android' in the TargetFrameworks for your project. [C:/RazorClassLibrary\RazorClassLibrary.csproj]
已尝试以下排查方案均未解决问题:
- 删除项目obj文件夹
- 执行NuGet包还原
- 更新Visual Studio至最新版本
- 更新MSBuild至最新版本
- 项目中添加配置项
<RuntimeIdentifier>android-arm64</RuntimeIdentifier>
解决步骤
1. 修正Razor类库的目标框架配置
报错核心原因是RCL项目的目标框架未包含移动端对应的TFM(目标框架别名)。右键RCL项目选择「编辑项目文件」,找到<TargetFrameworks>节点,补充和主MAUI项目匹配的移动端目标框架,参考配置如下:
<PropertyGroup> <!-- 版本号必须和主MAUI项目使用的.NET大版本完全一致,用.NET7就把net6.0替换为net7.0 --> <TargetFrameworks>net6.0;net6.0-android;net6.0-ios;net6.0-maccatalyst</TargetFrameworks> <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> <RazorLangVersion>3.0</RazorLangVersion> <!-- 删掉之前手动加的固定RuntimeIdentifier配置,该配置会导致多平台还原异常 --> </PropertyGroup>
2. 调整RCL项目的依赖配置
默认创建的Web端RCL模板会引入ASP.NET Core Web专属依赖,不兼容MAUI Blazor场景,需要在RCL的项目文件中添加MAUI兼容配置,同时移除MVC/Razor Pages相关的冗余配置:
<PropertyGroup> <UseMaui>true</UseMaui> <AddRazorSupportForMvc>false</AddRazorSupportForMvc> </PropertyGroup>
确保RCL项目安装的Microsoft.AspNetCore.Components.WebView.Maui包版本和主MAUI项目引用的版本完全一致,禁止出现版本差。
3. 全量清理后重新还原构建
- 关闭所有Visual Studio实例,删除整个解决方案下所有项目(包括主项目、RCL项目、其他类库项目)的
bin、obj文件夹,不要只删除单个项目的缓存目录 - 重新打开解决方案,先不要直接点击生成,右键解决方案选择「还原所有NuGet包」
- 还原完成后,打开RCL项目obj目录下的
project.assets.json文件,搜索net6.0-android字段,确认已生成对应平台的资产节点后,再执行构建即可。
避坑提示
- 不要在项目文件全局配置固定的
RuntimeIdentifier,该配置会覆盖构建时传入的平台参数,导致还原时漏掉其他平台的目标资产,RID配置仅需要在发布配置文件中单独指定即可。 - 如果使用预览版SDK(比如报错中提到的6.0.400-preview版本),需要确保Visual Studio启用了预览版SDK使用权限,同时解决方案根目录的
global.json指定的SDK版本和本地安装的预览版版本号完全匹配,否则会出现目标框架识别失败的问题。 - 解决方案内所有项目的MAUI相关NuGet包版本必须完全统一,版本不一致会直接导致资产匹配失败。
内容的提问来源于stack exchange,提问作者Senthilkumar
相关产品推荐
相关产品推荐

