Миграция с ASP.NET Core в .NET 9 на ASP.NET Core в .NET 10

В этой статье объясняется, как обновить ASP.NET Core в .NET 9 до ASP.NET Core в .NET 10.

Предпосылки

  • Visual Studio 2022 с рабочей нагрузкой ASP.NET и разработка веб-приложений.

    Рабочие нагрузки установщика VS22

Обновление версии пакета SDK для .NET в global.json

Если вы полагаетесь на файл global.json для нацеливания на конкретную версию пакета SDK для .NET, обновите свойство version до установленной версии пакета SDK для .NET 10. Рассмотрим пример.

{
  "sdk": {
-    "version": "9.0.304"
+    "version": "10.0.100"
  }
}

Обновление целевой платформы

Обновите идентификатор целевой платформы (TFM) в файле проекта на:net10.0

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
-    <TargetFramework>net9.0</TargetFramework>
+    <TargetFramework>net10.0</TargetFramework>
  </PropertyGroup>

</Project>

Обновление ссылок на пакеты

В файле проекта обновите атрибут Microsoft.AspNetCore.* каждой ссылки на пакет Microsoft.EntityFrameworkCore.*, Microsoft.Extensions.*, System.Net.Http.Json, и Version до версии 10.0.0 или более поздней. Рассмотрим пример.

<ItemGroup>
-   <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="9.0.0" />
-   <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0" />
-   <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="9.0.0" />
-   <PackageReference Include="System.Net.Http.Json" Version="9.0.0" />
+   <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="10.0.0" />
+   <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.0" />
+   <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="10.0.0" />
+   <PackageReference Include="System.Net.Http.Json" Version="10.0.0" />
</ItemGroup>

Blazor

Примечания к выпуску Blazor

Сведения о новых возможностях см. в статье "Новые возможности" в ASP.NET Core в .NET 10.

Настройте среду с помощью свойства Blazor WebAssembly MSBuild

Этот раздел относится только к автономным приложениям Blazor WebAssembly .

Заголовок Blazor-Environment и Properties/launchSettings.json файл (ASPNETCORE_ENVIRONMENT переменная среды) больше не используются для управления средой в автономных Blazor WebAssembly приложениях.

Задайте среду со свойством <WasmApplicationEnvironmentName> в файле проекта приложения (.csproj).

В следующем примере среда приложения устанавливается: Staging.

<WasmApplicationEnvironmentName>Staging</WasmApplicationEnvironmentName>

Среды по умолчанию:

  • Development для сборки.
  • Production для публикации.

Файл конфигурации загрузки встроен

BlazorКонфигурация загрузки, которая до выпуска .NET 10 существовала в файле с именем blazor.boot.json, была встроена в скрипт dotnet.js. Это влияет только на разработчиков, которые взаимодействуют непосредственно с файлом blazor.boot.json , например, когда разработчики:

  • Проверка целостности файлов для опубликованных ресурсов с помощью скрипта PowerShell для устранения неполадок, связанных с нарушением целостности, согласно рекомендациям по сбоям кэширования и проверок целостности в ASP.NET Core.
  • Изменение расширения имени файла DLL, если не используется формат файла Webcil по умолчанию, согласно руководству в Хостинг и развёртывание ASP.NET Core Blazor WebAssembly.

В настоящее время нет документированных стратегий замены для предыдущих подходов. Если вам требуется любая из предыдущих стратегий, откройте новую проблему документации, описывающую сценарий, используя ссылку "Открыть ссылку на проблему документации " в нижней части любой статьи.

Декларативная модель для консервирования состояния компонентов и сервисов

В предыдущих Blazor выпусках сохранение состояния компонента во время преререндеринга с использованием PersistentComponentState службы требовало значительного объема кода. Начиная с .NET 10, можно декларативно указать, какое состояние сохранять для компонентов и служб с помощью атрибута [PersistentState]. Дополнительные сведения см. в статье "Новые возможности" ASP.NET Core в .NET 10.

Пользовательский Blazor кэш и BlazorCacheBootResources свойство MSBuild удалены

Теперь, когда все Blazor клиентские файлы отпечатываются и кэшируются браузером, Blazorнастраиваемый механизм кэширования и BlazorCacheBootResources свойство MSBuild больше не доступно. Если файл проекта на стороне клиента содержит свойство MSBuild, удалите это свойство, так как оно больше не имеет никакого эффекта:

- <BlazorCacheBootResources>...</BlazorCacheBootResources>

Дополнительные сведения см. в разделе кэширование ASP.NET Core Blazor WebAssembly и ошибки проверки целостности.

Внедрите аутентификацию пользователей с помощью ключей доступа в существующем Blazor Web App

Инструкции см. в разделе "Реализация ключей доступа" в ASP.NET CoreBlazor Web App.

Если ошибки навигации отключены в Blazor Web App с личными учетными записями

Этот раздел применяется к Blazor Web App объектам, которые устанавливают свойство <BlazorDisableThrowNavigationException> MSBuild в true, чтобы избежать возникновения исключения навигации во время статической серверной отрисовки (SSR).

Метод IdentityRedirectManager бросил InvalidOperationException в метод RedirectTo, чтобы убедиться, что метод не был вызван из интерактивного режима отрисовки, и все методы перенаправления были помечены атрибутом [DoesNotReturn]. Шаблон проекта .NET 10 или более поздней версии Blazor Web App задает <BlazorDisableThrowNavigationException> свойство true MSBuild в файле проекта приложения, чтобы избежать возникновения исключения во время статического SSR. Если приложение, основанное на шаблоне проекта из предыдущей версии .NET, обновляется до .NET 10 или более поздней версии и включает <BlazorDisableThrowNavigationException> свойство trueMSBuild, внесите следующие изменения. Дополнительные сведения см. в статье "Новые возможности" ASP.NET Core в .NET 10.

В Components/Account/IdentityRedirectManager.cs:

  • Удалите InvalidOperationException из метода RedirectTo

    - throw new InvalidOperationException(
    -     $"{nameof(IdentityRedirectManager)} can only be used during static rendering.");
    
  • Удалите пять экземпляров атрибута [DoesNotReturn] из файла:

    - [DoesNotReturn]
    

Кардинальные изменения

Используйте статьи в статье Критические изменения в .NET, чтобы найти критические изменения , которые могут применяться при обновлении приложения до более новой версии .NET.