Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье объясняется, как управлять компоновщиком промежуточного языка (IL) для клиентских сценариев при создании Blazor приложения.
Blazor WebAssembly выполняет компоновку промежуточного языка (IL) во время сборки, чтобы затем удалить ненужный IL из выходных сборок приложения. Компоновщик отключен при сборке в конфигурации отладки. Для включения компоновщика приложения должны быть построены в конфигурации выпуска. Мы рекомендуем создавать выпуск при развертывании приложений Blazor WebAssembly.
Компоновка приложения оптимизируется в зависимости от размера, но это может иметь негативные последствия. Приложения, использующие отражение или связанные динамические функции, могут прерываться при обрезке, так как компоновщик не знает об этом динамическом поведении и не может определить общие типы, необходимые для отражения во время выполнения. Чтобы обрезать такие приложения, компоновщик должен быть уведомлен о любых типах, необходимых для отражения в коде и в пакетах или платформах, от которых зависит приложение.
Чтобы обеспечить правильную работу обрезанного приложения после его развертывания, важно часто тестировать сборки выпуска приложения при разработке.
Компоновку приложений Blazor можно настроить с помощью следующих функций MSBuild:
- настройка компоновки глобально с помощью свойства MSBuild;
- управлять компоновкой каждой сборки с помощью файла конфигурации.
Управление компоновкой с помощью свойства 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>
Дополнительные сведения и примеры см. в разделе "Форматы данных" (dotnet/runtimeрепозиторий GitHub).
Добавление файла конфигурации компоновщика XML в библиотеку
Чтобы настроить компоновщик для определенной библиотеки, добавьте файл конфигурации компоновщика 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>
| Значение региона | Сборка для одного региона |
|---|---|
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: библиотека платформы internationalization Framework Pnetlib (репозиторий mono/mono GitHub).
Дополнительные ресурсы
ASP.NET Core