Configure the Linker for Blazor

By Luke Latham

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:

Disable linking with a MSBuild property

Linking is enabled by default in Release mode when an app is built, which includes publishing. To disable linking for all assemblies, set the <BlazorLinkOnBuild> MSBuild property to false in the project file:


Control linking with a configuration file

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:

  <BlazorLinkerDescriptor Include="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.
  <assembly fullname="mscorlib">
      Preserve the methods in WasmRuntime because its methods are called by 
      JavaScript client-side code to implement timers.
    <type fullname="System.Threading.WasmRuntime" />
  <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*" />
    In this example, the app's entry point assembly is listed. The assembly
    isn't stripped by the IL Linker.
  <assembly fullname="MyCoolBlazorApp" />

For more information, see IL Linker: Syntax of xml descriptor.