添加类库项目引用后Blazor 8 WebApp客户端构建失败求助
问题描述
使用带Identity Authentication、Server及WebAssembly交互渲染模式的Blazor 8(.NET 8.0)WebApp模板开发项目,创建了外部类库存放服务端与客户端服务,客户端调用内部API、服务端调用仓储。但给客户端项目添加该类库的项目引用后,客户端构建失败,报错:
There was no runtime pack for Microsoft.AspNetCore.App available for the specified RunTimeIdentifier 'browser-wasm' in file Microsoft.NET.Sdk.FrameworkReferenceResolution.targets line 491
服务类库已安装的NuGet包如下:
Microsoft.AspNetCore.Components.WebAssembly Microsoft.AspNetCore.Components.WebAssembly.Authentication Newtonsoft.Json
失败原因及解决办法
核心原因
你的类库大概率使用了Microsoft.NET.Sdk.Web SDK(服务端Web项目专用SDK),而非适合类库的Microsoft.NET.Sdk或Microsoft.NET.Sdk.Razor(若类库包含Blazor组件)。Microsoft.NET.Sdk.Web会默认引入Microsoft.AspNetCore.App框架,而该框架没有适配browser-wasm运行时的包,导致客户端构建时找不到对应运行时依赖,触发报错。
另外,若类库的目标框架仅设置为服务端专属配置,或错误引用了服务端独有的依赖,也会引发此问题。
解决步骤
- 修改类库的
.csproj文件,将开头的SDK声明从<Project Sdk="Microsoft.NET.Sdk.Web">改为<Project Sdk="Microsoft.NET.Sdk">(普通类库)或<Project Sdk="Microsoft.NET.Sdk.Razor">(含Blazor组件的类库)。 - 检查类库的目标框架配置,确保设置为兼容Blazor WASM的选项,比如
net8.0或netstandard2.1,避免仅指定服务端可用的框架。 - 清理类库中不必要的服务端专属依赖,确保所有引入的NuGet包都能在
browser-wasm运行时环境正常工作。
内容的提问来源于stack exchange,提问作者JoeyD
相关产品推荐
相关产品推荐

