Visual Studio 2019创建Blazor应用后目标框架异常问题
问题解答
核心结论
不是Blazor无法使用.NET Core,这是** .NET Core 3.1 时代 Blazor WebAssembly 的设计特性**,属于正常现象。
原因分析
- .NET Core 3.1 发布时,Blazor WebAssembly 刚进入正式阶段,当时浏览器端的 WebAssembly 运行时还无法支持完整的 .NET Core Runtime,因此只能基于 .NET Standard 2.1 构建项目——这样既能保证 Blazor 组件在浏览器环境运行,也能在服务器端等其他 .NET 环境复用。
- 你选择 .NET Core 3.1 后项目自动设为 .NET Standard 2.1,是模板的默认行为,因为这是当时 Blazor WebAssembly 唯一可行的目标框架。
- 非 Blazor 项目能看到 .NET Core 选项,是因为它们的运行时模型不同(比如控制台、ASP.NET Core Web 项目直接基于 .NET Core Runtime 运行),和 Blazor WebAssembly 的浏览器端运行逻辑不冲突。
解决方式
若坚持使用 .NET Core 3.1 开发 Blazor WebAssembly
当前项目配置是正确的,无需修改。你仍然可以用 .NET Core 3.1 SDK 构建、运行项目,尽管项目文件的 <TargetFramework> 是 netstandard2.1,但这完全符合该版本 Blazor 的设计要求。
若想让项目直接目标 .NET Core(或后续版本)
需要升级到 .NET 5 及以上版本:从 .NET 5 开始,Blazor WebAssembly 已支持直接目标 .NET 5/6/7/8 等版本,项目的 <TargetFramework> 会对应设为 net5.0/net6.0 等,不再依赖 .NET Standard。操作步骤:
- 安装对应版本的 .NET SDK(比如 .NET 6 SDK)
- 新建项目时选择对应 .NET 版本;或修改现有项目的
.csproj文件,将<TargetFramework>改为net6.0(或更高版本),同时更新所有 NuGet 包到对应 .NET 版本的兼容版本。
内容的提问来源于stack exchange,提问作者noobnoobie
相关产品推荐
相关产品推荐

