创建一个blazorwasm项目
对应的dotnet命令行是dotnet new blazorwasm
,可以在后面加上-h
查看可能的选项。--https
就是可用的选项之一。
下面的命令创建一个名为wasm1的blazorwasm项目,其内容会生成在与项目同名的目录下:
dotnet new blazorwasm -o wasm1 --no-https
进入wasm1目录,执行dotnet publish
,就会在wasm1\bin\Debug\net6.0\publish\
目录下生成可以部署的文件。默认是Debug配置,若想生成Release配置,需要执行dotnet publish -c:Release
。
不管Debug还是Release配置都会优化集结件的大小,参考https://aka.ms/dotnet-illink
。Release看起来还有一个使用emcc编译静态物资的步骤。
可以看到生成的wwwroot中的_framework目录有着.NET运行所需文件。默认情况文件会以两种方式压缩,一种是brotli,生成的文件以br为后缀;另一种是gzip压缩,生成的文件以gz为后缀。若要取消压缩,根据 [blazor] Turn Off/On gzip and brotli compressing of published files #21728 ,可以将MSBuild的旗标BlazorEnableCompression设置为false,例如:
dotnet publish -p:BlazorEnableCompression=false
或者在工程文件中做如下设置:
<PropertyGroup>
<BlazorEnableCompression>false</BlazorEnableCompression>
</PropertyGroup>
WASM AOT相关
WASM AOT实现尚不能形成单一文件,参考 Developers can AOT compile .NET apps into WebAssembly format #44316 ,因为目前仍然需要下载DLLs,参考Blazor AOT .Net6 Preview 7 - Still downloading Dlls dotnet/aspnetcore#35302。
2021-08-10 ASP.NET Core updates in .NET 6 Preview 7
安装wasm-tools
dotnet workload install wasm-tools
从旧版本升级,只须将对下面两个nuget包的引用升级至6.0.0-preview.7.*
:
Microsoft.AspNetCore.*
Microsoft.Extensions.*
其他亮点
- Blazor组件可以直接从URL的query字符串接收参数了
- NavigationManager.NavigateTo可以替换浏览器的地址历史了
- 支持从JS到.NET的流数据互操作
- Blazor可以采用PageTitle以及HeadContent来修改
<head>
元素 - DynamicComponent新增了Instance辖属
2021-07-14 ASP.NET Core updates in .NET 6 Preview 6
其他亮点
- 提升了Blazor的可访问性
- 添加了必须的组件参数属性
[EditorRequired]
- 字节数组的JS互操作不需要JSON序列化了
- 视图组件的标记助手中的参数变为可选了
2021-06-17 ASP.NET Core updates in .NET 6 Preview 5
减少WASM的.NET运行时(dotnet.wasm)的尺寸。这是通过重链接(relinking)达到的。当发布一个应用的时候,会自动进行重链接。
通过将InvariantGlobalization设置为true可以关掉全球化功能,从而降低下载包的尺寸。
其他亮点
- .NET支持热重载了,使用
donet watch
- SVG的foreignObject元素中支持使用Razor语句
- 对于类型为Action以及RenderFragment的组件参数,其值可以是null
2021-05-25 ASP.NET Core updates in .NET 6 Preview 4
WebAssembly的AOT编译应该首次出现在此。
使用AOT编译需要设置以下选项:
<RunAOTCompilation>true</RunAOTCompilation>
AOT旨在加快运行时的速度,因为无需诠释IL。确定时AOT产生的运行件体积可能会翻倍,导致加载速度延长。
其他亮点
- 组件支持
@typeparam TEntity where TEntity : IEntity
- 组件支持ErrorBoundary
- .NET MAUI Blazor应用亮相
2012-04-08 ASP.NET Core updates in .NET 6 Preview 3
其余亮点:
- Razor编译器不再采用两步的策略来生成视图集结件了,而是直接集成到主项目集结件中。这些视图类默认为
internal sealed
,放置在根目录AspNetCoreGeneratedDocument之下。 - BlazorWebView 可用于WPF和WinForms
2021-03-11 ASP.NET Core updates in .NET 6 Preview 2
其余亮点:
- Razor编译器使用了source generator
- Blazor支持自定义事件参数
- Blazor支持prerenderred state的存留
2021-02-17 ASP.NET Core updates in .NET 6 Preview 1
列出.NET6计划支持的一些特性
其他参考
- AOT Compilation in .NET 6 Preview 4: Carl Franklin’s Blazor Train Ep 49
- https://github.com/mono/mono/tree/main/sdks/wasm
- Why I don’t see DLLs and dotnet.wasm being loaded on a Blazor WebAssembly app in Browser > Dev Tools > Network?
- 若加载网页的时候出现Integrity问题,可参考https://docs.microsoft.com/en-us/aspnet/core/blazor/host-and-deploy/webassembly?view=aspnetcore-6.0#resolve-integrity-check-failures
- Blazor Dlls - Can users access them and decompile?
(本篇完)