events
3月31日 23時 - 4月2日 23時
究極の Microsoft Fabric、Power BI、SQL、AI コミュニティ主導のイベント。 2025 年 3 月 31 日から 4 月 2 日。
今すぐ登録このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
この記事では、Blazor アプリを構築するときに、中間言語 (IL) リンカーを制御する方法について説明します。
Blazor WebAssembly では、ビルド中に中間言語 (IL) のリンクが実行されて、アプリの出力アセンブリから不要な IL がトリミングされます。 デバッグ構成でビルドすると、リンカーは無効になります。 リンカーを有効にするには、アプリをリリース構成でビルドする必要があります。 Blazor WebAssembly アプリを配置する場合は、リリースでビルドすることをお勧めします。
アプリをリンクするとサイズが最適化されますが、悪影響を及ぼす可能性があります。 リフレクションや関連する動的機能を使用するアプリは、トリミングされたときに中断する可能性があります。リンカーがこの動的な動作を認識せず、通常は実行時にリフレクションに必要な型を特定できないためです。 そのようなアプリをトリミングするには、コードと、アプリが依存しているパッケージまたはフレームワークのリフレクションで必要なすべての型を、リンカーに通知する必要があります。
トリミングされたアプリが配置後に正しく動作するには、開発中にアプリのリリース ビルドを頻繁にテストすることが重要です。
Blazor アプリのリンクは、次の MSBuild 機能を使用して構成できます。
リンクは、アプリが Release
構成でビルドされると有効になります。 これを変更するには、プロジェクト ファイルで BlazorWebAssemblyEnableLinking
の MSBuild プロパティを構成します。
<PropertyGroup>
<BlazorWebAssemblyEnableLinking>false</BlazorWebAssemblyEnableLinking>
</PropertyGroup>
XML の構成ファイルを用意してそのファイルをプロジェクト ファイル内で MSBuild 項目として指定することで、アセンブリごとにリンクを制御します。
<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>
詳細と例については、「 Data Formats (dotnet/runtime
GitHub リポジトリ)」を参照してください。
特定のライブラリ用にリンカーを構成するには、XML リンカー構成ファイルを埋め込みリソースとしてライブラリに追加します。 埋め込みリソースの名前は、アセンブリと同じにする必要があります。
次の例では、LinkerConfig.xml
ファイルが、ライブラリのアセンブリと同じ名前を持つ埋め込みリソースとして指定されています。
<ItemGroup>
<EmbeddedResource Include="LinkerConfig.xml">
<LogicalName>$(MSBuildProjectName).xml</LogicalName>
</EmbeddedResource>
</ItemGroup>
Blazor の Blazor WebAssembly アプリのリンカー構成では、明示的に要求されたロケールを除いて、国際化情報が削除されます。 これらのアセンブリを削除すると、アプリのサイズが最小限に抑えられます。
保持される I18N アセンブリを制御するには、プロジェクト ファイルで MSBuild のプロパティ <BlazorWebAssemblyI18NAssemblies>
を設定します。
<PropertyGroup>
<BlazorWebAssemblyI18NAssemblies>{all|none|REGION1,REGION2,...}</BlazorWebAssemblyI18NAssemblies>
</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
)。
詳しくは、「I18N: Pnetlib 国際化フレームワーク ライブラリ (mono/mono GitHub リポジトリ)」をご覧ください。
ASP.NET Core に関するフィードバック
ASP.NET Core はオープンソース プロジェクトです。 フィードバックを提供するにはリンクを選択します。
events
3月31日 23時 - 4月2日 23時
究極の Microsoft Fabric、Power BI、SQL、AI コミュニティ主導のイベント。 2025 年 3 月 31 日から 4 月 2 日。
今すぐ登録トレーニング
モジュール
Blazor を使用して再利用可能なコンポーネントを作成する - Training
Razor クラス ライブラリを使用し、Blazor を使用してコンポーネントをパッケージ化してデプロイする方法を説明します。
ドキュメント
ASP.NET Core Blazor 用のトリマーを構成する
Blazor アプリをビルドする際に中間言語 (IL) トリマーを制御する方法について説明します。
Blazor アプリの静的ファイルを構成および管理する方法について説明します。
ASP.NET Core Blazor WebAssembly .NET ランタイムとアプリ バンドルのキャッシュ
Blazor WebAssembly が WebAssembly .NET ランタイムとアプリ バンドルをキャッシュする方法、キャッシュを無効にする方法、整合性エラーを診断する方法を学びます。