Настройка компоновщика для ASP.NET Core BlazorConfigure the Linker for ASP.NET Core Blazor

Автор Люк Латэм (Luke Latham)By Luke Latham

Важно!

Blazor WebAssembly (предварительная версия)Blazor WebAssembly in preview

Blazor Server поддерживается только в 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.

Blazor выполняет компоновку промежуточного языка (IL) во время сборки выпуска для удаления ненужных IL из выходных данных сборки приложения.Blazor performs Intermediate Language (IL) linking during a Release build to remove unnecessary IL from the app's output assemblies.

Управлять компоновкой сборок можно одним из следующих способов:Control assembly linking using either of the following approaches:

Отключение компоновки с помощью свойства MSBuildDisable linking with a MSBuild property

Компоновка включена по умолчанию в режиме выпуска при сборке приложения, включая публикацию.Linking is enabled by default in Release mode when an app is built, which includes publishing. Чтобы отключить компоновку для всех сборок, для свойства MSBuild BlazorLinkOnBuild задайте значение false в файле проекта: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 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/aspnet/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: Syntax of xml descriptor (Компоновщик IL. Синтаксис дескриптора XML).For more information, see IL Linker: Syntax of xml descriptor.