Переход с ASP.NET Core 3.1 на 6.0
В этой статье объясняется, как обновить существующий проект ASP.NET Core 3.1 до ASP.NET Core 6.0. Сведения об обновлении с ASP.NET Core 5.0 до 6.0 см. в статье "Миграция с ASP.NET Core 5.0 на 6.0".
Необходимые компоненты
- Visual Studio 2022 с рабочей нагрузкой ASP.NET и веб-разработка.
- Пакет SDK для .NET 6.0
Обновление версии пакета SDK для .NET в global.json
Если вы используете global.json
файл для конкретной версии пакета SDK для .NET, обновите version
свойство до установленной версии пакета SDK для .NET 6.0. Например:
{
"sdk": {
- "version": "3.1.200"
+ "version": "6.0.100"
}
}
Обновление целевой платформы
Обновите moniker целевой платформы проекта (TFM) файла проекта следующим:net6.0
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>
Обновление ссылок на пакеты
В файле проекта обновите каждый Microsoft.AspNetCore.*
атрибут , Microsoft.Extensions.*
Microsoft.EntityFrameworkCore.*
и System.Net.Http.Json
ссылку на Version
пакет до 6.0.0 или более поздней версии. Например:
<ItemGroup>
- <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="3.1.6" />
- <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.6" />
- <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="3.1.6" />
- <PackageReference Include="System.Net.Http.Json" Version="3.2.1" />
+ <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="6.0.0" />
+ <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.0" />
+ <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="6.0.0" />
+ <PackageReference Include="System.Net.Http.Json" Version="6.0.0" />
</ItemGroup>
Удаление bin
и obj
папки
Возможно, потребуется удалить bin
папки и obj
папки. Выполните команду dotnet nuget locals --clear all
, чтобы очистить кэш пакетов NuGet.
Минимальная модель размещения
Шаблоны ASP.NET Core создают код с помощью новой минимальной модели размещения. Минимальная модель размещения объединяет Startup.cs
и Program.cs
в один Program.cs
файл. ConfigureServices
и Configure
больше не используются. Приложения, перенесенные с ASP.NET Core 3.1 до 6.0, не должны использовать минимальную модель размещения, используя Startup
и универсальный узел , используемый шаблонами ASP.NET Core 3.1, полностью поддерживается.
Сведения об использовании Startup
с новой минимальной моделью размещения см. в статье "Использование запуска с новой минимальной моделью размещения".
Чтобы перейти к новой модели минимального размещения с помощью следующего шаблона, используемого шаблонами ASP.NET Core 6.0, см . примеры кода, перенесенные в новую минимальную модель размещения в ASP.NET Core 6.0 и миграция с ASP.NET Core 5.0 на 6.0
Обновление Razor библиотек классов (RCLs)
Перенос Razor библиотек классов (RCLs) для использования новых API или функций, представленных в рамках ASP.NET Core 6.0.
Чтобы обновить RCL, предназначенный для компонентов, выполните следующие действия.
Обновите следующие свойства в файле проекта:
<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> - <TargetFramework>netstandard2.0</TargetFramework> - <RazorLangVersion>3.0</RazorLangVersion> + <TargetFramework>net6.0</TargetFramework> </PropertyGroup>
Обновите другие пакеты до последних версий. Последние версии можно найти на NuGet.org.
Чтобы обновить RCL для MVC, обновите следующие свойства в файле проекта:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
Blazor
Чтобы применить все функции 5.0 и 6.0 для Blazor приложений, рекомендуется выполнить следующий процесс:
- Создайте проект версии 6.0 Blazor из одного из Blazor шаблонов проектов. Дополнительные сведения см. в статье Инструментарий для ASP.NET Core Blazor.
- Переместите компоненты и код приложения в приложение 6.0, внося изменения в новые функции 5.0 и 6.0.
Обновление образов Docker
Для приложений с помощью Docker обновите инструкции и скрипты DockerfileFROM
. Используйте базовый образ, включающий среду выполнения ASP.NET Core 6.0. Рассмотрим следующее docker pull
различие между ASP.NET Core 3.1 и 6.0:
- docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1
+ docker pull mcr.microsoft.com/dotnet/aspnet:6.0
В рамках перехода на .NET в качестве имени продукта образы Docker перемещаются из mcr.microsoft.com/dotnet/core
репозиториев mcr.microsoft.com/dotnet
в . Дополнительные сведения см. в разделе .NET 5.0 . Изменение имени репозитория Docker (dotnet/dotnet-docker #1939).
Изменения привязки модели в ASP.NET Core MVC и Razor Pages
DateTime
значения привязаны к модели в формате UTC
В ASP.NET Core 3.1 и более ранних DateTime
версий значения были привязаны к модели как локальное время, где часовой пояс был определен сервером. DateTime
значения, привязанные к входным форматированию (JSON), и DateTimeOffset
значения были привязаны как часовые пояса UTC.
В ASP.NET Core 5.0 и более поздних версий привязка модели последовательно связывает DateTime
значения с часовым поясом UTC.
Чтобы сохранить предыдущее поведение, удалите в DateTimeModelBinderProvider
Startup.ConfigureServices
:
services.AddControllersWithViews(options =>
options.ModelBinderProviders.RemoveType<DateTimeModelBinderProvider>());
ComplexObjectModelBinderProvider
\ ComplexObjectModelBinder
заменять ComplexTypeModelBinderProvider
\ ComplexTypeModelBinder
Чтобы добавить поддержку типов записей C# 9 для привязки модели, этоComplexTypeModelBinderProvider:
- Аннотированный как устаревший.
- Больше не зарегистрировано по умолчанию.
Приложения, использующие наличие ComplexTypeModelBinderProvider
в ModelBinderProviders
коллекции, должны ссылаться на новый поставщик привязки:
- var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexTypeModelBinderProvider>();
+ var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexObjectModelBinderProvider>();
UseDatabaseErrorPage
устаревший
Шаблоны ASP.NET Core 3.1, которые включают параметр для отдельных учетных записей пользователей, создают вызов UseDatabaseErrorPage. UseDatabaseErrorPage
теперь устарело и должно быть заменено сочетанием AddDatabaseDeveloperPageExceptionFilter
и UseMigrationsEndPoint
, как показано в следующем коде:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
+ services.AddDatabaseDeveloperPageExceptionFilter();
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddRazorPages();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
+ app.UseMigrationsEndPoint();
- app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
Дополнительные сведения см. в статье Обсоляние по промежуточного слоя DatabaseErrorPage (dotnet/aspnetcore #24987).
модуль ASP.NET Core (ANCM)
Если модуль ASP.NET Core (ANCM) не был выбранным компонентом при установке Visual Studio или если в системе установлена предварительная версия ANCM, скачайте последнюю версию установщика пакета размещения .NET Core (прямая загрузка) и запустите установщик. Дополнительные сведения см. в разделе "Пакет размещения".
Изменение имени приложения
В .NET 6 WebApplicationBuilder нормализует корневой путь содержимого, чтобы завершиться с DirectorySeparatorCharпомощью . Большинство приложений, перенесенных из HostBuilder или WebHostBuilder не имеющих того же имени приложения, так как они не нормализованы. Дополнительные сведения см. в разделе SetApplicationName
Просмотр критических изменений
См. следующие ресурсы.
- Identity: изменена версия начальной загрузки пользовательского интерфейса по умолчанию
- Критические изменения для миграции с версии 3.1 на 5.0. ASP.NET Core и Entity Framework Core также включены в список.
- Критические изменения для миграции с версии 5.0 на 6.0: включает ASP.NET Core и Entity Framework Core.
- Репозиторий объявлений GitHub (aspnet/Announcements,
6.0.0
label): включает критические и не критически важные сведения. - Репозиторий объявлений GitHub (aspnet/Announcements,
5.0.0
label): включает критические и не критически важные сведения.
ASP.NET Core