Konfigurace linkeru pro ASP.NET Core Blazor
Tento článek vysvětluje, jak při vytváření Blazor aplikace řídit linker jazyka IL (Intermediate Language).
Blazor WebAssemblyprovádí propojení zprostředkujícího jazyka (IL) během sestavení a ořízne nepotřebné il ze výstupních sestavení aplikace. Linker je při sestavování v konfiguraci ladění zakázán. Aplikace se musí sestavit v konfiguraci vydané verze, aby bylo možné linker povolit. Při nasazování aplikací Blazor WebAssembly doporučujeme sestavovat ve verzi.
Propojení aplikace optimalizuje velikost, ale může mít škodlivé účinky. Aplikace, které používají reflexi nebo související dynamické funkce, se můžou při oříznutí přerušit, protože linker o tomto dynamickém chování neví a nedokáže obecně určit, které typy jsou potřeba pro reflexi za běhu. Aby bylo možné takové aplikace oříznout, musí být linker informován o všech typech požadovaných reflexí v kódu a v balíčcích nebo architekturách, na které aplikace závisí.
Pokud chcete zajistit, aby oříznutá aplikace po nasazení správně fungovala, je důležité při vývoji často testovat buildy vydané verze aplikace.
Propojení aplikací Blazor je možné nakonfigurovat pomocí těchto funkcí NÁSTROJE MSBuild:
- Konfigurace globálního propojení s vlastností MSBuild
- Řízení propojení na základě sestavení s konfiguračním souborem
Propojení ovládacích prvků s vlastností MSBuild
Propojení je povolené, když je aplikace integrovaná v Release
konfiguraci. Chcete-li toto nastavení změnit, nakonfigurujte BlazorWebAssemblyEnableLinking
vlastnost MSBuild v souboru projektu:
<PropertyGroup>
<BlazorWebAssemblyEnableLinking>false</BlazorWebAssemblyEnableLinking>
</PropertyGroup>
Řízení propojení s konfiguračním souborem
Řízení propojení na základě sestavení poskytnutím konfiguračního souboru XML a určením souboru jako položky NÁSTROJE MSBuild v souboru projektu:
<ItemGroup>
<BlazorLinkerDescriptor Include="LinkerConfig.xml" />
</ItemGroup>
LinkerConfig.xml
:
<?xml version="1.0" encoding="UTF-8" ?>
<!--
This file specifies which parts of the BCL or 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>
Další informace a příklady najdete v tématu Formáty dat (dotnet/runtime
úložiště GitHub).
Přidání konfiguračního souboru linkeru XML do knihovny
Pokud chcete nakonfigurovat linker pro konkrétní knihovnu, přidejte do knihovny konfigurační soubor linkeru XML jako vložený prostředek. Vložený prostředek musí mít stejný název jako sestavení.
V následujícím příkladu LinkerConfig.xml
je soubor zadán jako vložený prostředek, který má stejný název jako sestavení knihovny:
<ItemGroup>
<EmbeddedResource Include="LinkerConfig.xml">
<LogicalName>$(MSBuildProjectName).xml</LogicalName>
</EmbeddedResource>
</ItemGroup>
Konfigurace linkeru pro internacionalizaci
BlazorKonfigurace linkeru pro Blazor WebAssembly aplikace odstraní informace o internacionalizaci s výjimkou národních prostředí explicitně požadovaných národních prostředí. Odebrání těchto sestavení minimalizuje velikost aplikace.
Chcete-li řídit, která sestavení I18N jsou zachována, nastavte <BlazorWebAssemblyI18NAssemblies>
vlastnost MSBuild v souboru projektu:
<PropertyGroup>
<BlazorWebAssemblyI18NAssemblies>{all|none|REGION1,REGION2,...}</BlazorWebAssemblyI18NAssemblies>
</PropertyGroup>
Hodnota oblasti | Sestavení monoregionu |
---|---|
all |
Všechna sestavení zahrnutá |
cjk |
I18N.CJK.dll |
mideast |
I18N.MidEast.dll |
none (výchozí) |
Nic |
other |
I18N.Other.dll |
rare |
I18N.Rare.dll |
west |
I18N.West.dll |
K oddělení více hodnot (například mideast,west
) použijte čárku.
Další informace najdete v tématu I18N: Pnetlib Internationalization Framework Library (mono/mono úložiště GitHub).