Blazor 0.8.0实验版本现已发布

Blazor 0.8.0现在可用! 此版本将Blazor更新为在.NET Core 3.0中使用Razor组件,并添加了一些重要的错误修复。


获得Blazor 0.8.0


要开始使用Blazor 0.8.0,请安装以下软件:


  1. .NET Core 3.0预览版2 SDK (3.0.100-preview-010184)
  2. 选择了ASP.NET和Web开发工作负载的Visual Studio 2019 (Preview 2或更高版本)。
  3. Visual Studio Marketplace中的最新Blazor扩展。
  4. 命令行上的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!

Source: https://habr.com/ru/post/zh-CN440544/


All Articles