Blazor WASM项目升级到netcoreapp3.1后找不到BlazorWebAssembly JS文件报错
Blazor WASM 从netstandard2.1切换到netcoreapp3.1打包错误修复方案
你遇到的Unable to find BlazorWebAssembly JS files. This usually indicates a packaging error报错,核心原因是.NET Core 3.1版本的Blazor WASM框架规则和你修改后的项目配置不匹配,具体修复步骤如下:
- 修正项目SDK配置:.NET Core 3.1 版本的Blazor WASM还没有推出独立的
Microsoft.NET.Sdk.BlazorWebAssemblySDK,该专属SDK是.NET 5及之后版本才支持的,你需要把项目的Sdk属性改回原来的Microsoft.NET.Sdk.Web - 补充Blazor WASM标识:在PropertyGroup节点中新增
<BlazorWebAssembly>true</BlazorWebAssembly>配置,告知打包工具这是Blazor WASM项目 - 恢复缺失的配置项:把你修改时删掉的两个项目引用、logo.png静态资源复制配置加回项目文件,依赖缺失也会导致打包流程中断无法生成JS文件
- 补充3.1版本专属NuGet引用:在ItemGroup中新增Blazor WASM 3.2版本(对应.NET Core 3.1的最后稳定发行版)的必备依赖:
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="3.2.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Build" Version="3.2.1" PrivateAssets="all" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="3.2.1" PrivateAssets="all" />
- 重新生成项目:保存修改后的项目文件,删除解决方案所有项目的bin、obj文件夹,执行
dotnet restore后重新生成项目即可解决报错
修复后完整项目文件参考
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> <RazorLangVersion>3.0</RazorLangVersion> <BlazorWebAssembly>true</BlazorWebAssembly> <TreatWarningsAsErrors>true</TreatWarningsAsErrors> </PropertyGroup> <ItemGroup> <None Remove="Resources\bg-BG.yml" /> <None Remove="Resources\en-US.yml" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\..\BlazorShop.Common\BlazorShop.Common.csproj" /> <ProjectReference Include="..\..\BlazorShop.Models\BlazorShop.Models.csproj" /> </ItemGroup> <ItemGroup> <Content Update="wwwroot\logo.png"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </Content> </ItemGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="3.2.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Build" Version="3.2.1" PrivateAssets="all" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="3.2.1" PrivateAssets="all" /> </ItemGroup> <ItemGroup> <Folder Include="Pages\Admin\Fills\" /> <Folder Include="Pages\Admin\Ingredients\" /> <Folder Include="Pages\Admin\Bases\" /> <Folder Include="Pages\Admin\Orders\" /> </ItemGroup> </Project>
内容的提问来源于stack exchange,提问作者Vladimir Petukhov
相关产品推荐
相关产品推荐

