Blazor WebAssembly项目无法引用.NET Core类库问题求助
报错根因
Blazor WebAssembly运行于浏览器的WebAssembly沙箱环境,仅支持引用无服务端依赖的.NET类库。你当前的类库引用了Piranha.AspNetCore、Microsoft.EntityFrameworkCore.SqlServer等仅可在服务端运行的组件,且包含数据库访问逻辑,无法在前端WebAssembly环境中运行,因此会触发无法引用ASP.NET Core共享框架项目的报错。
将类库目标框架修改为.NET Framework的方案完全不可行,Blazor WebAssembly基于.NET Core/.NET 5+生态,与.NET Framework不兼容,会直接导致类库运行异常。
你提供的类库项目文件内容如下:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net5.0</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.9" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.9"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.9" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.9"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <PackageReference Include="Piranha" Version="9.1.1" /> <PackageReference Include="Piranha.AspNetCore" Version="9.1.0" /> </ItemGroup> </Project>
可行解决方案
根据你的实际使用场景选择对应方案:
场景1:仅需复用类库中的通用模型、工具方法
将现有类库拆分为两个独立项目:
- 新建通用类库,项目SDK使用
Microsoft.NET.Sdk,目标框架与你的Blazor WebAssembly项目保持一致,仅存放无服务端依赖的实体模型、DTO、通用工具方法,移除所有AspNetCore、EF Core SqlServer、Piranha相关包引用。 - 原有类库保留服务端相关代码、所有服务端依赖包,仅提供给服务端项目引用。
- Blazor WebAssembly项目直接引用拆分后的通用类库即可。
场景2:需要调用类库中的数据访问、Piranha相关业务逻辑
- 在你的ASP.NET Core后端服务项目中引用该类库,将需要用到的业务逻辑封装为Web API接口对外暴露。
- Blazor WebAssembly项目通过HTTP请求调用后端API获取对应数据、执行业务操作,不要尝试直接在前端执行数据库访问、服务端逻辑。
内容的提问来源于stack exchange,提问作者brad。
相关产品推荐
相关产品推荐

