
Blazor 0.8.0现在可用! 此版本将Blazor更新为在.NET Core 3.0中使用Razor组件,并添加了一些重要的错误修复。
获得Blazor 0.8.0
要开始使用Blazor 0.8.0,请安装以下软件:
- .NET Core 3.0预览版2 SDK (3.0.100-preview-010184)
- 选择了ASP.NET和Web开发工作负载的Visual Studio 2019 (Preview 2或更高版本)。
- Visual Studio Marketplace中的最新Blazor扩展。
命令行上的Blazor模板:
dotnet new -i Microsoft.AspNetCore.Blazor.Templates::0.8.0-preview-19104-04
您可以在https://blazor.net上找到Blazor的入门说明,文档和教程。
升级到Blazor 0.8.0
要将现有的Blazor应用程序升级到Blazor 0.8.0,请首先确保已安装上面列出的先决条件。
要将独立的Blazor 0.7.0项目升级到0.8.0,请执行以下操作:
- 将Blazor软件包和.NET CLI工具参考更新为0.8.0-preview-19104-04。
- 替换任何对Microsoft.AspNetCore.Blazor的包引用。
- 用
ComponentBase
替换BlazorComponent
。 - 更新组件上
SetParametersAsync
替代以替代SetParametersAsync
。 - 用
LayoutComponentBase
替换BlazorLayoutComponent
- 用
IComponentsApplicationBuilder
替换IBlazorApplicationBuilder
。 - 将
Microsoft.AspNetCore.Blazor.*
所有using语句替换为Microsoft.AspNetCore.Blazor.*
使用Microsoft.AspNetCore.Components.*
,除非将Microsoft.AspNetCore.Blazor.Hosting
保留在Program.cs中 - 在index.html中,更新脚本引用以引用components.webassembly.js,而不是blazor.webassembly.js。
要将ASP.NET Core托管的Blazor应用程序升级到0.8.0,请执行以下操作:
- 如前所述,更新客户端Blazor项目。
- 通过遵循ASP.NET Core文档中的迁移步骤,将承载Blazor应用程序的ASP.NET Core应用程序更新为.NET Core 3.0。
- 将目标框架更新为
netcoreapp3.0
- 删除任何对Microsoft.AspNetCore.App或Microsoft.AspNetCore.All的包引用
- 升级任何非Blazor Microsoft.AspNetCore *程序包引用到版本3.0.0-preview-19075-0444
- 删除任何对Microsoft.AspNetCore.Razor.Design的包引用
- 要启用JSON支持,请添加对Microsoft.AspNetCore.Mvc.NewtonsoftJson的程序包引用,并更新
Startup.ConfigureServices
以调用services.AddMvc().AddNewtonsoftJson()
- 将Microsoft.AspNetCore.Blazor.Server程序包参考升级到0.8.0-preview-19104-04
- 添加对Microsoft.AspNetCore.Components.Server的程序包引用
- 在
Startup.ConfigureServices
简化对app.AddResponseCompression
任何调用,以调用默认重载,而无需将WebAssembly或二进制数据指定为要压缩的其他MIME类型。 - 在
Startup.Configure
在对app.UseBlazorDebugging()
的现有调用之后添加对app.UseBlazorDebugging()
的调用app.UseBlazor<App.Startup>()
- 删除对
Microsoft.AspNetCore.Blazor.Server
命名空间的任何不必要的使用。
要将Blazor类库升级到0.8.0:
- 替换对Microsoft.AspNetCore.Components.Browser的程序包引用,并将版本更新为3.0.0-preview-19075 -0444。
- 在库的项目文件中,将项目SDK从“ Microsoft.NET.Sdk.Web”更改为“ Microsoft.NET.Sdk.Razor”。
服务器端Blazor现在是.NET Core 3.0中的ASP.NET Core Razor组件
正如最近宣布的那样 ,服务器端Blazor现在作为.NET Core 3.0中的ASP.NET Core Razor组件提供。 我们已经将Blazor组件模型集成到ASP.NET Core 3.0中,并将其重命名为Razor Components。 Blazor 0.8.0现在基于Razor组件构建,使您能够在WebAssembly的浏览器中托管Razor组件。
将服务器端Blazor项目升级到.NET Core 3.0中的ASP.NET Core Razor组件
如果您一直在使用服务器端Blazor,建议您升级以在.NET Core 3.0中使用ASP.NET Core Razor组件。
要将服务器端Blazor应用程序升级到ASP.NET Core Razor组件,请执行以下操作:
- 如前所述,更新客户端Blazor项目,不同之处在于 ,将blazor.server.js的脚本引用替换为components.server.js。
- 如前所述,将托管Razor组件的ASP.NET Core应用程序更新为.NET Core 3.0。
- 在服务器项目中:
- 将Microsoft.AspNetCore.Blazor.Server程序包参考升级到0.8.0-preview-19104-04
- 添加对Microsoft.AspNetCore.Components.Server版本3.0.0-preview-19075-0444的程序包引用
- 将
Microsoft.AspNetCore.Blazor.Server
的using语句替换为Microsoft.AspNetCore.Components.Server
- 将
services.AddServerSideBlazor
替换为services.AddRazorComponents
并将app.UseServerSideBlazor
替换为app.UseRazorComponents
。 - 在
Startup.Configure
方法中,在调用app.UseRazorComponents
之前添加app.UseStaticFiles()
。 - 将wwwroot文件夹从Blazor应用程序项目移动到ASP.NET Core服务器项目
在ASP.NET Core Razor组件和客户端Blazor之间切换
有时,能够在服务器(ASP.NET Core Razor组件)和客户端(Blazor)上运行Razor组件之间进行切换很方便。 例如,您可能在开发过程中在服务器上运行,以便可以轻松调试,但随后将应用程序发布以在客户端上运行。
要更新ASP.NET Core托管的Blazor应用程序,使其可以作为ASP.NET Core Razor组件应用程序运行,请执行以下操作:
- 将wwwroot文件夹从客户端Blazor项目移动到ASP.NET Core服务器项目。
- 在服务器项目中:
- 更新index.html中的脚本标记以指向components.server.js而不是components.webassembly.js 。
- 在
Startup.ConfigureServices
方法中添加对services.AddRazorComponents<Client.Startup>()
的调用。 - 在调用
app.UseStaticFiles()
之前,在Startup.Configure
方法中添加对app.UseStaticFiles()
的调用。 UseBlazor
app.UseRazorComponents<Client.Startup>()
的调用替换为app.UseRazorComponents<Client.Startup>()
- 如果使用依赖项注入将
HttpClient
注入组件,则需要在服务器的Startup.ConfigureServices
方法中添加HttpClient
作为服务。
Visual Studio 2019现在包含Blazor项目的工具
以前,要获得对Blazor项目的工具支持,您需要安装Visual Studio的Blazor扩展。 从Visual Studio 2019 Preview 2开始,已经包含对Razor组件(以及Blazor应用程序)的工具支持,而无需安装任何其他工具。 现在仅需要Blazor扩展名才能在Visual Studio中安装Blazor项目模板。
运行时改进
Blazor 0.8.0包括.NET运行时的一些改进,例如Chrome上运行时性能的改进以及IL链接器的改进。 根据我们的性能基准,Chrome上的Blazor 0.8.0性能现在提高了约25%。 现在,您还可以从Blazor应用程序引用现有的库(如Json.NET),而无需任何其他链接程序配置:
@functions { WeatherForecast[] forecasts; protected override async Task OnInitAsync() { var json = await Http.GetStringAsync("api/SampleData/WeatherForecasts"); forecasts = Newtonsoft.Json.JsonConvert.DeserializeObject<WeatherForecast[]>(json); } }
已知问题
您可能会遇到此发行版中的几个已知问题:
- “不可能找到任何兼容的框架版本。 找不到指定的框架'Microsoft.NETCore.App'版本'2.0.0'。” :生成Blazor应用程序时可能会看到此错误,因为IL链接器当前需要.NET Core 2.x才能运行。 要变通解决此问题,请安装.NET Core 2.2或通过在项目文件中设置
<BlazorLinkOnBuild>false</BlazorLinkOnBuild>
属性来禁用IL链接。 - “无法生成deps.json,它可能已经生成。” 注意:运行独立的Blazor应用程序时,您可能会看到此错误,并且尚未还原任何.NET Core应用程序的软件包。 要变通解决此问题,请创建任何.NET Core应用程序(例如
dotnet new console
),然后重新运行Blazor应用程序。
这些问题将在以后的Blazor更新中解决。
未来更新
Blazor的此版本主要侧重于首先将Razor组件集成到ASP.NET Core 3.0中,然后在此之上重新构建Blazor。 展望未来,我们计划在每个.NET Core 3.0更新中附带Blazor更新。
Blazor以及对在浏览器中的WebAssembly上运行Razor组件的支持,不会随.NET Core 3.0一起提供,但我们将继续努力,以在以后发布Blazor。
提供意见
我们希望您喜欢Blazor的最新预览版。 与以前的版本一样,您的反馈对我们很重要。 如果您在试用Blazor时遇到问题或有疑问,请在GitHub上提交问题 。 如果您遇到困难,也可以在Gitter上与我们和Blazor社区聊天,或分享Blazor为您工作的方式。 在试用Blazor一段时间后,请通过产品内调查让我们知道您的想法。 运行Blazor项目模板之一时,单击应用程序主页上显示的调查链接:

感谢您试用Blazor!