ASP.NET Core [!OP.NO-LOC(Blazor)] 用のリンカーを構成するConfigure the Linker for ASP.NET Core [!OP.NO-LOC(Blazor)]

作成者: Luke LathamBy Luke Latham

重要

プレビュー段階の Blazor WebAssemblyBlazor WebAssembly in preview

" Blazor サーバー" は ASP.NET Core 3.0 でサポートされています。Blazor Server is supported in ASP.NET Core 3.0. " Blazor WebAssembly" は、ASP.NET Core 3.1 のプレビュー段階です。Blazor WebAssembly is in preview for ASP.NET Core 3.1.

[!OP.NO-LOC(Blazor)] では、ビルド中に中間言語 (IL) のリンクが実行されて、アプリの出力アセンブリから不要な IL が削除されます。 performs Intermediate Language (IL) linking during a build to remove unnecessary IL from the app's output assemblies.

次の方法のいずれかを使って、アセンブリのリンクを制御します。Control assembly linking using either of the following approaches:

MSBuild プロパティを使ってリンクを無効にするDisable linking with a MSBuild property

アプリをビルドするときは既定でリンクが有効になり、これには発行が含まれます。Linking is enabled by default when an app is built, which includes publishing. すべてのアセンブリに対してリンクを無効にするには、プロジェクト ファイルで MSBuild プロパティ BlazorLinkOnBuildfalse に設定します。To disable linking for all assemblies, set the BlazorLinkOnBuild MSBuild property to false in the project file:

<PropertyGroup>
  <BlazorLinkOnBuild>false</BlazorLinkOnBuild>
</PropertyGroup>

構成ファイルを使ってリンクを制御するControl linking with a configuration file

XML の構成ファイルを用意してそのファイルをプロジェクト ファイル内で MSBuild 項目として指定することで、アセンブリごとにリンクを制御します。Control linking on a per-assembly basis by providing an XML configuration file and specifying the file as a MSBuild item in the project file:

<ItemGroup>
  <BlazorLinkerDescriptor Include="Linker.xml" />
</ItemGroup>

Linker.xml: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 リンカー:xml 記述子の構文に関するページをご覧ください。For more information, see IL Linker: Syntax of xml descriptor.

国際化用にリンカーを構成するConfigure the linker for internationalization

既定では、[!OP.NO-LOC(Blazor)] WebAssembly に対する [!OP.NO-LOC(Blazor)] のリンカー構成により、明示的に要求されたロケールを除き、国際化情報は除去されます。By default, [!OP.NO-LOC(Blazor)]'s linker configuration for [!OP.NO-LOC(Blazor)] WebAssembly apps strips out internationalization information except for locales explicitly requested. これらのアセンブリを削除すると、アプリのサイズが最小限に抑えられます。Removing these assemblies minimizes the app's size.

保持される I18N アセンブリを制御するには、プロジェクト ファイルで MSBuild のプロパティ <MonoLinkerI18NAssemblies> を設定します。To control which I18N assemblies are retained, set the <MonoLinkerI18NAssemblies> MSBuild property in the project file:

<PropertyGroup>
  <MonoLinkerI18NAssemblies>{all|none|REGION1,REGION2,...}</MonoLinkerI18NAssemblies>
</PropertyGroup>
リージョンの値Region Value Mono のリージョン アセンブリMono region assembly
all すべてのアセンブリが含まれますAll assemblies included
cjk I18N.CJK.dllI18N.CJK.dll
mideast I18N.MidEast.dllI18N.MidEast.dll
none (既定値)none (default) NoneNone
other I18N.Other.dllI18N.Other.dll
rare I18N.Rare.dllI18N.Rare.dll
west I18N.West.dllI18N.West.dll

複数の値を区切るにはコンマを使用します (例: mideast,west)。Use a comma to separate multiple values (for example, mideast,west).

詳しくは、「I18N: Pnetlib 国際化フレームワーク ライブラリ (mono/mono GitHub リポジトリ)」をご覧ください。For more information, see I18N: Pnetlib Internationalization Framework Library (mono/mono GitHub repository).