Размещение и развертывание Blazor WebAssembly с помощью ASP.NET CoreHost and deploy ASP.NET Core Blazor WebAssembly

Авторы: Люк Лэтем, Рэйнер Стропек и Дэниэл РотBy Luke Latham, Rainer Stropek, and Daniel Roth

Важно!

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 WebAssembly:With the Blazor WebAssembly hosting model:

  • Приложение Blazor, его зависимости и среда выполнения .NET скачиваются в браузере.The Blazor app, its dependencies, and the .NET runtime are downloaded to the browser.
  • Приложение выполняется непосредственно в потоке пользовательского интерфейса браузера.The app is executed directly on the browser UI thread.

Поддерживаются следующие стратегии развертывания:The following deployment strategies are supported:

  • Приложение Blazor обслуживается приложением ASP.NET Core.The Blazor app is served by an ASP.NET Core app. Эта стратегия описана в разделе Размещенное развертывание с использованием ASP.NET Core.This strategy is covered in the Hosted deployment with ASP.NET Core section.
  • Приложение Blazor помещается на статическом веб-сервере или службе, где .NET не используется, чтобы обслуживать приложение Blazor.The Blazor app is placed on a static hosting web server or service, where .NET isn't used to serve the Blazor app. Эта стратегия рассматривается в разделе Автономное развертывание, где приводятся сведения о размещении приложения Blazor WebAssembly в качестве дочернего приложения IIS.This strategy is covered in the Standalone deployment section, which includes information on hosting a Blazor WebAssembly app as an IIS sub-app.

Переопределение URL-адресов для маршрутизацииRewrite URLs for correct routing

Маршрутизация запросов к компонентам страниц в приложении Blazor WebAssembly не настолько проста, как маршрутизация запросов к приложению, размещенному на сервере Blazor.Routing requests for page components in a Blazor WebAssembly app isn't as straightforward as routing requests in a Blazor Server, hosted app. Рассмотрим приложение Blazor WebAssembly с двумя компонентами:Consider a Blazor WebAssembly app with two components:

  • Main.razor — загружается в корне приложения и содержит ссылку на компонент About (href="About").Main.razor – Loads at the root of the app and contains a link to the About component (href="About").
  • About.razor — компонент About.About.razorAbout component.

При запросе документа приложения по умолчанию в адресной строке браузера (например, https://www.contoso.com/):When the app's default document is requested using the browser's address bar (for example, https://www.contoso.com/):

  1. Браузер отправляет запрос.The browser makes a request.
  2. Возвращается страница по умолчанию; обычно это index.html.The default page is returned, which is usually index.html.
  3. Страница index.html обеспечивает начальную загрузку приложения.index.html bootstraps the app.
  4. Загружается маршрутизатор Blazor, и компонент Main Razor преобразовывается для просмотра.Blazor's router loads, and the Razor Main component is rendered.

На странице Main возможность выбора ссылки на компонент About доступна на клиентском компьютере, так как маршрутизатор Blazor не разрешает браузеру сделать запрос в Интернете к www.contoso.com для About и сам обрабатывает отображенный компонент About.In the Main page, selecting the link to the About component works on the client because the Blazor router stops the browser from making a request on the Internet to www.contoso.com for About and serves the rendered About component itself. Все запросы внутренних конечных точек в пределах приложения Blazor WebAssembly будут работать так же: Запросы не активируют браузерные запросы к ресурсам, размещенным на сервере в Интернете.All of the requests for internal endpoints within the Blazor WebAssembly app work the same way: Requests don't trigger browser-based requests to server-hosted resources on the Internet. Маршрутизатор обрабатывает запросы внутренним образом.The router handles the requests internally.

Если запрос www.contoso.com/About сделан с помощью адресной строки браузера, он завершится ошибкой.If a request is made using the browser's address bar for www.contoso.com/About, the request fails. Такой ресурс не существует на интернет-узле приложения, поэтому возвращается ответ 404 — Not Found (не найдено).No such resource exists on the app's Internet host, so a 404 - Not Found response is returned.

Поскольку браузеры выполняют запросы к интернет-узлам для страниц на стороне клиента, веб-серверам и службам размещения необходимо переопределять все запросы к ресурсам, физически находящимся не на сервере, в случае страницы index.html.Because browsers make requests to Internet-based hosts for client-side pages, web servers and hosting services must rewrite all requests for resources not physically on the server to the index.html page. Когда index.html возвращается, маршрутизатор Blazor приложения берет на себя управление и отвечает необходимым ресурсом.When index.html is returned, the app's Blazor router takes over and responds with the correct resource.

При развертывании на сервере IIS можно использовать модуль переопределения URL-адресов с опубликованным файлом приложения web.config.When deploying to an IIS server, you can use the URL Rewrite Module with the app's published web.config file. Дополнительные сведения см. в описании IIS.For more information, see the IIS section.

Размещенное развертывание с использованием ASP.NET CoreHosted deployment with ASP.NET Core

Размещенное развертывание обслуживает приложение Blazor WebAssembly для браузеров из приложения ASP.NET Core, выполняющегося на веб-сервере.A hosted deployment serves the Blazor WebAssembly app to browsers from an ASP.NET Core app that runs on a web server.

Приложение Blazor входит в состав приложения ASP.NET Core в публикуемых выходных данных; таким образом, два приложения развертываются вместе.The Blazor app is included with the ASP.NET Core app in the published output so that the two apps are deployed together. Веб-сервер, позволяющий размещать приложения ASP.NET Core, является обязательным.A web server that is capable of hosting an ASP.NET Core app is required. Для размещенного развертывания Visual Studio включает шаблон проекта Приложение Blazor WebAssembly (шаблон blazorwasm при использовании команды dotnet new) с выбранным параметром Размещенный.For a hosted deployment, Visual Studio includes the Blazor WebAssembly App project template (blazorwasm template when using the dotnet new command) with the Hosted option selected.

Дополнительные сведения о размещении приложения ASP.NET Core и его развертывании см. в разделе Размещение и развертывание ASP.NET Core.For more information on ASP.NET Core app hosting and deployment, see Размещение и развертывание ASP.NET Core.

Подробнее о развертывании в службе приложений Azure см. в Публикация приложения ASP.NET Core в Azure с помощью Visual Studio.For information on deploying to Azure App Service, see Публикация приложения ASP.NET Core в Azure с помощью Visual Studio.

Автономное развертываниеStandalone deployment

Автономное развертывание обрабатывает приложение Blazor WebAssembly как набор статических файлов, которые будут запрашиваться непосредственно клиентами.A standalone deployment serves the Blazor WebAssembly app as a set of static files that are requested directly by clients. Любой статический файловый сервер способен обслуживать приложение Blazor.Any static file server is able to serve the Blazor app.

Изолированные ресурсы развертывания публикуются в папке bin/Release/{целевая_платформа}publish/{имя_сборки}/dist.Standalone deployment assets are published to the bin/Release/{TARGET FRAMEWORK}/publish/{ASSEMBLY NAME}/dist folder.

IISIIS

IIS можно использовать как полнофункциональный статический файловый сервер для приложений Blazor.IIS is a capable static file server for Blazor apps. Чтобы настроить IIS для размещения Blazor, см. раздел Построение статического веб-сайта на IIS.To configure IIS to host Blazor, see Build a Static Website on IIS.

Опубликованные ресурсы создаются в папке /bin/Release/{целевая_платформа}/publish.Published assets are created in the /bin/Release/{TARGET FRAMEWORK}/publish folder. Разместить содержимое папки publish на веб-сервере или в службе размещения.Host the contents of the publish folder on the web server or hosting service.

web.config.web.config

При публикации проекта Blazor создается файл web.config со следующей конфигурацией IIS:When a Blazor project is published, a web.config file is created with the following IIS configuration:

  • Типы MIME заданы для следующих расширений файлов:MIME types are set for the following file extensions:
    • .dllapplication/octet-stream.dllapplication/octet-stream
    • .jsonapplication/json.jsonapplication/json
    • .wasmapplication/wasm.wasmapplication/wasm
    • .woffapplication/font-woff.woffapplication/font-woff
    • .woff2application/font-woff.woff2application/font-woff
  • Сжатие HTTP включено для следующих типов MIME:HTTP compression is enabled for the following MIME types:
    • application/octet-stream
    • application/wasm
  • Задаются правила модуля переопределения URL-адресов:URL Rewrite Module rules are established:
    • Обслуживание вложенного каталога, в котором находятся статические ресурсы приложения ( {имя_сборки}/dist/{запрошенный_путь} ).Serve the sub-directory where the app's static assets reside ({ASSEMBLY NAME}/dist/{PATH REQUESTED}).
    • Создание резервного маршрута одностраничного приложения, чтобы запросы, не относящиеся к файлам ресурсов, перенаправлялись к документу приложения по умолчанию в папке статических ресурсов ( {имя_сборки}/dist/index.html).Create SPA fallback routing so that requests for non-file assets are redirected to the app's default document in its static assets folder ({ASSEMBLY NAME}/dist/index.html).

Установка модуля переопределения URL-адресовInstall the URL Rewrite Module

Модуль переопределения URL-адресов нужен, чтобы переопределять URL-адреса.The URL Rewrite Module is required to rewrite URLs. Модуль не устанавливается по умолчанию и недоступен для установки как компонент службы роли веб-сервера (IIS).The module isn't installed by default, and it isn't available for install as a Web Server (IIS) role service feature. Модуль необходимо скачать с веб-сайта IIS.The module must be downloaded from the IIS website. Для его установки используйте установщик веб-платформы.Use the Web Platform Installer to install the module:

  1. Локально перейдите на страницу скачивания модуля переопределения URL-адресов.Locally, navigate to the URL Rewrite Module downloads page. В англоязычной версии выберите WebPI для скачивания установщика веб-платформы.For the English version, select WebPI to download the WebPI installer. Для других языков выберите подходящую архитектуру сервера (x86 или x64) для скачивания установщика.For other languages, select the appropriate architecture for the server (x86/x64) to download the installer.
  2. Скопируйте установщик на сервер.Copy the installer to the server. Запустите установщик.Run the installer. Нажмите кнопку Установить и примите условия лицензионного соглашения.Select the Install button and accept the license terms. Перезагрузка сервера после завершения установки не требуется.A server restart isn't required after the install completes.

Настройка веб-сайтаConfigure the website

Установите для веб сайта физический путь к папке приложения.Set the website's Physical path to the app's folder. Папка содержит:The folder contains:

  • Файл web.config, который используется службами IIS для настройки веб-сайта, включая необходимые правила перенаправления и типы содержимого файлов.The web.config file that IIS uses to configure the website, including the required redirect rules and file content types.
  • Папку статических ресурсов приложения.The app's static asset folder.

Размещение в качестве дочернего приложения IISHost as an IIS sub-app

Если автономное приложение размещено как дочернее приложение IIS, выполните одно из следующих действий:If a standalone app is hosted as an IIS sub-app, perform either of the following:

  • Отключите наследуемый обработчик модуля ASP.NET Core.Disable the inherited ASP.NET Core Module handler.

    Удалите обработчик из опубликованного файла приложения Blazor web.config, добавив в файл раздел <handlers>:Remove the handler in the Blazor app's published web.config file by adding a <handlers> section to the file:

    <handlers>
      <remove name="aspNetCore" />
    </handlers>
    
  • Отключите наследование раздела <system.webServer> от корневого (родительского) приложения, используя <location> со значением false для inheritInChildApplications:Disable inheritance of the root (parent) app's <system.webServer> section using a <location> element with inheritInChildApplications set to false:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <location path="." inheritInChildApplications="false">
        <system.webServer>
          <handlers>
            <add name="aspNetCore" ... />
          </handlers>
          <aspNetCore ... />
        </system.webServer>
      </location>
    </configuration>
    

Удаление обработчика или отключение наследования выполняется вместе с настройкой базового пути приложения.Removing the handler or disabling inheritance is performed in addition to configuring the app's base path. Задайте базовый путь приложения в файле index.html приложения как псевдоним IIS, используемый при настройке дочернего приложения в IIS.Set the app base path in the app's index.html file to the IIS alias used when configuring the sub-app in IIS.

Устранение неполадокTroubleshooting

Если получено сообщение 500 — Internal Server Error (внутренняя ошибка сервера), а диспетчер служб IIS возвращает ошибки при попытке получить доступ к конфигурации веб сайта, убедитесь, что установлен модуль переопределения URL-адресов.If a 500 - Internal Server Error is received and IIS Manager throws errors when attempting to access the website's configuration, confirm that the URL Rewrite Module is installed. Если модуль не установлен, IIS не может проанализировать файл web.config.When the module isn't installed, the web.config file can't be parsed by IIS. Это предотвращает загрузку конфигурации веб сайта диспетчером служб IIS и передачу статических файлов Blazor c веб-сайта.This prevents the IIS Manager from loading the website's configuration and the website from serving Blazor's static files.

Дополнительные сведения об устранении неполадок развертывания в службах IIS см. в разделе Устранение неполадок ASP.NET Core в службе приложений Azure и службах IIS.For more information on troubleshooting deployments to IIS, see Устранение неполадок ASP.NET Core в службе приложений Azure и службах IIS.

Хранилище AzureAzure Storage

Размещение статических файлов службы хранилища Azure предусматривает размещение бессерверного приложения Blazor.Azure Storage static file hosting allows serverless Blazor app hosting. Поддерживаются пользовательские доменные имена, сеть доставки содержимого Azure (CDN) и HTTPS.Custom domain names, the Azure Content Delivery Network (CDN), and HTTPS are supported.

Если служба BLOB-объектов настроена для размещения статических веб-сайтов в учетной записи хранения:When the blob service is enabled for static website hosting on a storage account:

  • Задайте для параметра Имя документа индекса значение index.html.Set the Index document name to index.html.
  • Задайте для параметра Путь к документу с ошибкой значение index.html.Set the Error document path to index.html. Компоненты Razor и другие конечные точки, не являющиеся файлами, не имеют физических путей в статическом содержимом, хранящемся в службе больших двоичных объектов.Razor components and other non-file endpoints don't reside at physical paths in the static content stored by the blob service. При получении запроса для одного из этих ресурсов, который должен обрабатываться маршрутизатором Blazor, ошибка 404 — Not Found (не найдено), создаваемая службой BLOB-объектов, перенаправляет запрос, используя путь к документу с ошибкой.When a request for one of these resources is received that the Blazor router should handle, the 404 - Not Found error generated by the blob service routes the request to the Error document path. При этом возвращается большой двоичный объект index.html, и маршрутизатор Blazor загружает и обрабатывает путь.The index.html blob is returned, and the Blazor router loads and processes the path.

См. подробнее о размещении статических веб-сайтов в службе хранилища Azure.For more information, see Static website hosting in Azure Storage.

NginxNginx

Следующий файл nginx.conf упрощен для демонстрации того, как настроить Nginx для отправки файла Index.html, когда не удается найти соответствующий файл на диске.The following nginx.conf file is simplified to show how to configure Nginx to send the index.html file whenever it can't find a corresponding file on disk.

events { }
http {
    server {
        listen 80;

        location / {
            root /usr/share/nginx/html;
            try_files $uri $uri/ /index.html =404;
        }
    }
}

Дополнительные сведения о конфигурации веб-сервера Nginx в рабочей среде см. в разделе Создание файлов конфигурации NGINX Plus и NGINX.For more information on production Nginx web server configuration, see Creating NGINX Plus and NGINX Configuration Files.

Nginx в DockerNginx in Docker

Чтобы разместить Blazor в Docker с помощью Nginx, настройте в Dockerfile образ с Nginx на основе Alpine.To host Blazor in Docker using Nginx, setup the Dockerfile to use the Alpine-based Nginx image. Измените Dockerfile, скопировав файл nginx.config в контейнер.Update the Dockerfile to copy the nginx.config file into the container.

Добавьте одну строку в Dockerfile, как показано в следующем примере:Add one line to the Dockerfile, as shown in the following example:

FROM nginx:alpine
COPY ./bin/Release/netstandard2.0/publish /usr/share/nginx/html/
COPY nginx.conf /etc/nginx/nginx.conf

ApacheApache

Чтобы развернуть приложение Blazor WebAssembly в CentOS 7 или более поздней версии, выполните следующие действия:To deploy a Blazor WebAssembly app to CentOS 7 or later:

  1. Создайте файл конфигурации Apache.Create the Apache configuration file. В следующем примере показан упрощенный файл конфигурации (blazorapp.config):The following example is a simplified configuration file (blazorapp.config):

    <VirtualHost *:80>
        ServerName www.example.com
        ServerAlias *.example.com
    
        DocumentRoot "/var/www/blazorapp"
        ErrorDocument 404 /index.html
    
        AddType aplication/wasm .wasm
        AddType application/octet-stream .dll
    
        <Directory "/var/www/blazorapp">
            Options -Indexes
            AllowOverride None
        </Directory>
    
        <IfModule mod_deflate.c>
            AddOutputFilterByType DEFLATE text/css
            AddOutputFilterByType DEFLATE application/javascript
            AddOutputFilterByType DEFLATE text/html
            AddOutputFilterByType DEFLATE application/octet-stream
            AddOutputFilterByType DEFLATE application/wasm
            <IfModule mod_setenvif.c>
            BrowserMatch ^Mozilla/4 gzip-only-text/html
            BrowserMatch ^Mozilla/4.0[678] no-gzip
            BrowserMatch bMSIE !no-gzip !gzip-only-text/html
        </IfModule>
        </IfModule>
    
        ErrorLog /var/log/httpd/blazorapp-error.log
        CustomLog /var/log/httpd/blazorapp-access.log common
    </VirtualHost>
    
  2. Поместите файл конфигурации Apache в каталог /etc/httpd/conf.d/. Это каталог конфигурации Apache по умолчанию в CentOS 7.Place the Apache configuration file into the /etc/httpd/conf.d/ directory, which is the default Apache configuration directory in CentOS 7.

  3. Поместите файлы приложения в каталог /var/www/blazorapp (расположение, указанное в параметре DocumentRoot в файле конфигурации).Place the app's files into the /var/www/blazorapp directory (the location specified to DocumentRoot in the configuration file).

  4. Перезапустите службу Apache.Restart the Apache service.

Дополнительные сведения см. в разделах mod_mime и mod_deflate.For more information, see mod_mime and mod_deflate.

GitHub PagesGitHub Pages

Чтобы обеспечить переопределение URL-адресов, добавьте файл 404.html со сценарием, который производит перенаправление на страницу index.html.To handle URL rewrites, add a 404.html file with a script that handles redirecting the request to the index.html page. Пример реализации, предоставленный сообществом, см. в разделе Одностраничные приложения для страниц GitHub (rafrex/spa-github-pages на сайте GitHub).For an example implementation provided by the community, see Single Page Apps for GitHub Pages (rafrex/spa-github-pages on GitHub). Пример с использованием подхода сообщества можно увидеть в разделе blazor-demo/blazor-demo.github.io на сайте GitHub (активный сайт).An example using the community approach can be seen at blazor-demo/blazor-demo.github.io on GitHub (live site).

При использовании сайта проекта вместо сайта организации следует добавить или обновить тег <base> в файле index.html.When using a project site instead of an organization site, add or update the <base> tag in index.html. Задайте для имени репозитория GitHub значение атрибута href с косой чертой в конце (например, my-repository/).Set the href attribute value to the GitHub repository name with a trailing slash (for example, my-repository/.

Значения конфигурации узлаHost configuration values

Приложения Blazor WebAssembly могут принимать следующие значения конфигурации узла в качестве аргументов командной строки во время выполнения в среде разработки.Blazor WebAssembly apps can accept the following host configuration values as command-line arguments at runtime in the development environment.

Корневой каталог содержимогоContent root

Аргумент --contentroot задает абсолютный путь к каталогу, где находятся файлы содержимого приложения (корневой каталог содержимого).The --contentroot argument sets the absolute path to the directory that contains the app's content files (content root). В следующих примерах /content-root-path — это путь к корневому каталогу содержимого приложения.In the following examples, /content-root-path is the app's content root path.

  • Передайте этот аргумент при локальном запуске приложения в командной строке.Pass the argument when running the app locally at a command prompt. Перейдите в каталог приложения и выполните следующую команду:From the app's directory, execute:

    dotnet run --contentroot=/content-root-path
    
  • Добавьте запись в файл приложения launchSettings.json в профиле IIS Express.Add an entry to the app's launchSettings.json file in the IIS Express profile. Этот параметр используется при запуске приложения с помощью отладчика Visual Studio и из командной строки вместе с dotnet run.This setting is used when the app is run with the Visual Studio Debugger and from a command prompt with dotnet run.

    "commandLineArgs": "--contentroot=/content-root-path"
    
  • В Visual Studio укажите аргумент в меню Свойства > Отладка > Аргументы приложения.In Visual Studio, specify the argument in Properties > Debug > Application arguments. Задание аргумента на странице свойств Visual Studio добавляет его в файл launchSettings.json.Setting the argument in the Visual Studio property page adds the argument to the launchSettings.json file.

    --contentroot=/content-root-path
    

Базовый путьPath base

Аргумент --pathbase задает базовый путь приложения для локального выполнения с некорневым относительным путем URL (в <base> тег href задан с путем, отличным от / для промежуточной и рабочей сред).The --pathbase argument sets the app base path for an app run locally with a non-root relative URL path (the <base> tag href is set to a path other than / for staging and production). В следующих примерах /relative-URL-path — это базовый путь приложения.In the following examples, /relative-URL-path is the app's path base. Дополнительные сведения см. в описании базового пути приложения.For more information, see App base path.

Важно!

В отличие от пути, заданного через href в теге <base>, не ставьте косую черту (/) при передаче значения аргумента --pathbase.Unlike the path provided to href of the <base> tag, don't include a trailing slash (/) when passing the --pathbase argument value. Если основной путь приложения задан в теге <base> как <base href="/CoolApp/"> (включая косую черту в конце), передайте значение аргумента командной строки как --pathbase=/CoolApp (без косой черты в конце).If the app base path is provided in the <base> tag as <base href="/CoolApp/"> (includes a trailing slash), pass the command-line argument value as --pathbase=/CoolApp (no trailing slash).

  • Передайте этот аргумент при локальном запуске приложения в командной строке.Pass the argument when running the app locally at a command prompt. Перейдите в каталог приложения и выполните следующую команду:From the app's directory, execute:

    dotnet run --pathbase=/relative-URL-path
    
  • Добавьте запись в файл приложения launchSettings.json в профиле IIS Express.Add an entry to the app's launchSettings.json file in the IIS Express profile. Этот параметр используется при запуске приложения с помощью отладчика Visual Studio и из командной строки вместе с dotnet run.This setting is used when running the app with the Visual Studio Debugger and from a command prompt with dotnet run.

    "commandLineArgs": "--pathbase=/relative-URL-path"
    
  • В Visual Studio укажите аргумент в меню Свойства > Отладка > Аргументы приложения.In Visual Studio, specify the argument in Properties > Debug > Application arguments. Задание аргумента на странице свойств Visual Studio добавляет его в файл launchSettings.json.Setting the argument in the Visual Studio property page adds the argument to the launchSettings.json file.

    --pathbase=/relative-URL-path
    

URL-адресаURLs

Аргумент --urls задает IP-адреса или адреса узлов с портами и протоколами, по которым ожидаются запросы.The --urls argument sets the IP addresses or host addresses with ports and protocols to listen on for requests.

  • Передайте этот аргумент при локальном запуске приложения в командной строке.Pass the argument when running the app locally at a command prompt. Перейдите в каталог приложения и выполните следующую команду:From the app's directory, execute:

    dotnet run --urls=http://127.0.0.1:0
    
  • Добавьте запись в файл приложения launchSettings.json в профиле IIS Express.Add an entry to the app's launchSettings.json file in the IIS Express profile. Этот параметр используется при запуске приложения с помощью отладчика Visual Studio и из командной строки вместе с dotnet run.This setting is used when running the app with the Visual Studio Debugger and from a command prompt with dotnet run.

    "commandLineArgs": "--urls=http://127.0.0.1:0"
    
  • В Visual Studio укажите аргумент в меню Свойства > Отладка > Аргументы приложения.In Visual Studio, specify the argument in Properties > Debug > Application arguments. Задание аргумента на странице свойств Visual Studio добавляет его в файл launchSettings.json.Setting the argument in the Visual Studio property page adds the argument to the launchSettings.json file.

    --urls=http://127.0.0.1:0
    

Настройка компоновщикаConfigure the Linker

Blazor выполняет компоновку для промежуточного языка (IL) в каждой сборке, чтобы удалить ненужный код из выходных сборок.Blazor performs Intermediate Language (IL) linking on each build to remove unnecessary IL from the output assemblies. Связыванием сборки можно управлять в процессе сборки.Assembly linking can be controlled on build. Дополнительные сведения можно найти по адресу: Настройка компоновщика для ASP.NET Core Blazor.For more information, see Настройка компоновщика для ASP.NET Core Blazor.