Mengonfigurasi Linker untuk ASP.NET Core Blazor
Artikel ini menjelaskan cara mengontrol Intermediate Language (IL) Linker saat membuat Blazor aplikasi.
Blazor WebAssemblymelakukan penautan Bahasa Perantara (IL) selama build untuk memangkas IL yang tidak perlu dari rakitan output aplikasi. Linker dinonaktifkan saat membangun dalam konfigurasi Debug. Aplikasi harus dibuat dalam Konfigurasi rilis untuk mengaktifkan linker. Sebaiknya buat di Rilis saat menyebarkan aplikasi Anda Blazor WebAssembly .
Menautkan aplikasi mengoptimalkan ukuran tetapi mungkin memiliki efek yang merugikan. Aplikasi yang menggunakan refleksi atau fitur dinamis terkait dapat rusak saat dipangkas karena linker tidak tahu tentang perilaku dinamis ini dan tidak dapat menentukan secara umum jenis mana yang diperlukan untuk refleksi saat runtime. Untuk memangkas aplikasi tersebut, linker harus diberi tahu tentang jenis apa pun yang diperlukan oleh refleksi dalam kode dan dalam paket atau kerangka kerja yang bergantung pada aplikasi.
Untuk memastikan aplikasi yang dipangkas berfungsi dengan benar setelah disebarkan, penting untuk sering menguji Build rilis aplikasi saat mengembangkan.
Penautan untuk Blazor aplikasi dapat dikonfigurasi menggunakan fitur MSBuild ini:
- Konfigurasikan penautan secara global dengan properti MSBuild.
- Mengontrol penautan per rakitan dengan file konfigurasi.
Mengontrol penautan dengan properti MSBuild
Penautan diaktifkan saat aplikasi dibangun dalam Release
konfigurasi. Untuk mengubah ini, konfigurasikan BlazorWebAssemblyEnableLinking
properti MSBuild dalam file proyek:
<PropertyGroup>
<BlazorWebAssemblyEnableLinking>false</BlazorWebAssemblyEnableLinking>
</PropertyGroup>
Mengontrol penautan dengan file konfigurasi
Kontrol penautan per rakitan dengan menyediakan file konfigurasi XML dan menentukan file sebagai item MSBuild dalam file proyek:
<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>
Untuk informasi dan contoh selengkapnya, lihat Format Data (dotnet/runtime
repositori GitHub).
Menambahkan file konfigurasi linker XML ke pustaka
Untuk mengonfigurasi linker untuk pustaka tertentu, tambahkan file konfigurasi linker XML ke pustaka sebagai sumber daya yang disematkan. Sumber daya yang disematkan harus memiliki nama yang sama dengan rakitan.
Dalam contoh berikut, LinkerConfig.xml
file ditentukan sebagai sumber daya tersemat yang memiliki nama yang sama dengan rakitan pustaka:
<ItemGroup>
<EmbeddedResource Include="LinkerConfig.xml">
<LogicalName>$(MSBuildProjectName).xml</LogicalName>
</EmbeddedResource>
</ItemGroup>
Mengonfigurasi linker untuk internasionalisasi
BlazorKonfigurasi linker untuk Blazor WebAssembly aplikasi menghapus informasi internasionalisasi kecuali untuk lokal yang diminta secara eksplisit. Menghapus rakitan ini meminimalkan ukuran aplikasi.
Untuk mengontrol rakitan I18N mana yang dipertahankan, atur <BlazorWebAssemblyI18NAssemblies>
properti MSBuild dalam file proyek:
<PropertyGroup>
<BlazorWebAssemblyI18NAssemblies>{all|none|REGION1,REGION2,...}</BlazorWebAssemblyI18NAssemblies>
</PropertyGroup>
Nilai Wilayah | Rakitan wilayah mono |
---|---|
all |
Semua rakitan disertakan |
cjk |
I18N.CJK.dll |
mideast |
I18N.MidEast.dll |
none (default) |
Tidak |
other |
I18N.Other.dll |
rare |
I18N.Rare.dll |
west |
I18N.West.dll |
Gunakan koma untuk memisahkan beberapa nilai (misalnya, mideast,west
).
Untuk informasi selengkapnya, lihat I18N: Pustaka Kerangka Kerja Internasionalisasi Pnetlib (repositori GitHub mono/mono).
Sumber Daya Tambahan:
ASP.NET Core