В новой версии .NET 6 Preview 5 команда разработчиков расширила функциональность Hot Reload в компоненте ASP.NET Core, используемом для веб-разработки.

На этой неделе Microsoft выпустила .NET 6 Preview 5 и Visual Studio 2022 Preview 1, причем последняя в основном предназначена для тестирования революционного перехода к 64-битной среде IDE.

В то же время .NET 6 Preview 5 выдвинула на первый план новую схему рабочих нагрузок SDK, которая служит основой для усилий по унификации .NET 6, позволяя адаптировать SDK для конкретных рабочих нагрузок вместо старого монолитного подхода, что дает возможность добавлять поддержку новых типов приложений без увеличения размера SDK.

Для ASP.NET Core основное улучшение Hot Reload затрагивает dotnet watch, инструмент интерфейса командной строки (CLI), который запускает команду .NET Core при изменении исходных файлов и обновляет браузер при обнаружении изменений в наблюдаемых файлах. Это позволяет перезагружать проекты ASP.NET Core в реальном времени.

«Вам больше не нужно указывать hotReloadProfile в launchSettings.json, чтобы использовать .NET Hot Reload с dotnet watch», — сказал Рот. «.NET Hot Reload с соответствующим поведением проекта теперь включен по умолчанию. Когда выполняется редактирование кода, которое не может быть перезагружено горячим способом (« грубое »редактирование), dotnet watch теперь спросит, хотите ли вы перезапустить приложение, чтобы применить изменение. . »

Говоря об этих «грубых» изменениях, dotnet watch теперь может обнаруживать их в приложениях Blazor WebAssembly, клиентском компоненте популярного проекта Blazor, который позволяет C# быть основным языком программирования для веб-приложений вместо JavaScript. Примененные изменения к таким приложениям будут повторно применены при обновлении браузера или при загрузке приложения в отдельной вкладке браузера или экземпляре браузера.

Также на фронте Blazor WebAssembly размеры загрузки были уменьшены с помощью функции, известной как повторное связывание. В этой модели хостинга на стороне клиента — в отличие от Blazor Server — приложение Blazor и его зависимости загружаются в браузер параллельно вместе со средой выполнения .NET на основе WebAssembly. Это может занять много времени в зависимости от скорости соединения и других факторов.

Повторное связывание позволяет исключить ненужную логику выполнения — такую как глобализация — из загрузки среды выполнения.

«В .NET 6 Preview 5 теперь вы можете использовать инструменты .NET WebAssembly (те же инструменты, которые используются для компиляции .NET WebAssembly AOT), чтобы повторно связать среду выполнения, чтобы удалить ненужную логику и значительно уменьшить размер среды выполнения», — пояснил Рот. «Если у вас установлена рабочая нагрузка .NET WebAssembly, повторное связывание среды выполнения выполняется автоматически при публикации приложения. Уменьшение размера особенно заметно при использовании режима инвариантной глобализации». На приведенной ниже таблице показан эффект, в частности размер передаваемого файла dotnet.wasm для проекта Blazor WebAssembly по умолчанию с .NET 5 и .NET 6:

https://visualstudiomagazine.com/articles/2021/06/18/~/media/ECG/visualstudiomagazine/Images/2021/06/relinking.ashx

В ответ на другой комментарий читателя Рот отметил, что существуют известные проблемы с использованием ASP.NET Core в .NET 6 Preview 5. В примечаниях к выпуску GitHub перечислено следующее:

  • Running Blazor WebAssembly using IIS Express in Development

Начиная с .NET 6 Preview 1, существует постоянная проблема с запуском приложений Blazor WebAssembly с использованием сервера IIS Express во время разработки в Visual Studio. В качестве обходного пути мы рекомендуем использовать Kestrel во время разработки.

  • Дополнительные сборки в VS не работают для приложений с представлениями Razor

Начиная с .NET 6 Preview 3, изменения представлений Razor не будут обновляться во время инкрементных сборок. В качестве обходного пути вы можете:

  • Сборка из командной строки
  • Настройте VS, чтобы всегда вызывать MSBuild при создании проектов
  • Очищайте и создавайте проекты, чтобы вносить изменения

Roth перечислил другие особенности ASP.NET Core .NET 6 Preview 5 как:

  • Шаблоны ASP.NET Core SPA обновлены до Angular 11 и React 17
  • Использование синтаксиса Razor в элементах SVG foreignObject
  • Укажите значение null для параметров компонента Action и RenderFragment
  • Настраиваемый порог буфера перед записью на диск в программе форматирования вывода Json.NET
  • Подкатегории для лучшей фильтрации журналов Kestrel
  • Более быстрое получение и установка заголовков HTTP
  • Настраиваемый размер неиспользованного входящего буфера для IIS

«Мы надеемся, что вам понравится этот предварительный выпуск ASP.NET Core в .NET 6. Нам не терпится узнать о вашем опыте работы с этим выпуском. Дайте нам знать, что вы думаете, публикуя информацию о проблемах на GitHub», — заключил Roth.