作者:Luke Latham
重要
Blazor WebAssembly 为预览版状态
ASP.NET Core 3.0 支持 Blazor Server 。 Blazor WebAssembly 在 ASP.NET Core 3.1 中为预览版。
[!OP.NO-LOC(Blazor)] 在生成期间执行中间语言 (IL) 链接以从应用的输出程序集中删除不必要的 IL。
使用以下任何一种方法控制程序集链接:
在生成应用(包括发布)时,默认启用链接。 若要禁用所有程序集链接,请在项目文件中将 BlazorLinkOnBuild
MSBuild 属性设置为 false
:
<PropertyGroup> <BlazorLinkOnBuild>false</BlazorLinkOnBuild> </PropertyGroup>
通过提供 XML 配置文件并在项目文件中将该文件指定为 MSBuild 项,按程序集控制链接:
<ItemGroup> <BlazorLinkerDescriptor Include="Linker.xml" /> </ItemGroup>
Linker.xml :
<?xml version="1.0" encoding="UTF-8" ?> <!-- This file specifies which parts of the BCL or [!OP.NO-LOC(Blazor)] packages must not be stripped by the IL Linker even if they aren't referenced by user code. --> <linker> <assembly fullname="mscorlib"> <!-- Preserve the methods in WasmRuntime because its methods are called by JavaScript client-side code to implement timers. Fixes: https://github.com/dotnet/blazor/issues/239 --> <type fullname="System.Threading.WasmRuntime" /> </assembly> <assembly fullname="System.Core"> <!-- System.Linq.Expressions* is required by Json.NET and any expression.Compile caller. The assembly isn't stripped. --> <type fullname="System.Linq.Expressions*" /> </assembly> <!-- In this example, the app's entry point assembly is listed. The assembly isn't stripped by the IL Linker. --> <assembly fullname="MyCoolBlazorApp" /> </linker>
有关详细信息,请参阅 IL Linker:xml 描述符语法。
默认情况下,[!OP.NO-LOC(Blazor)] 对于 [!OP.NO-LOC(Blazor)] WebAssembly 应用的链接器配置会去除国际化信息(显式请求的区域设置除外)。 删除这些程序集可最大程度地缩减应用的大小。
要控制保留哪些国际化程序集,请在项目文件中设置 <MonoLinkerI18NAssemblies>
MSBuild 属性:
<PropertyGroup> <MonoLinkerI18NAssemblies>{all|none|REGION1,REGION2,...}</MonoLinkerI18NAssemblies> </PropertyGroup>
区域值 | Mono 区域程序集 |
---|---|
all |
包含的所有程序集 |
cjk |
I18N.CJK.dll |
mideast |
I18N.MidEast.dll |
none (默认值) |
None |
other |
I18N.Other.dll |
rare |
I18N.Rare.dll |
west |
I18N.West.dll |
各个值之间用逗号分隔(例如:mideast,west
)。
有关详细信息,请参阅国际化:Pnetlib 国际化框架库(mono/mono GitHub 存储库)。