Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur du uppdaterar ett befintligt ASP.NET Core 3.1-projekt till ASP.NET Core i .NET 6. Information om hur du uppgraderar från ASP.NET Core i .NET 5 till .NET 6 finns i Migrera från ASP.NET Core i .NET 5 till .NET 6.
Förutsättningar
- Visual Studio 2022 med arbetsuppgiften ASP.NET och webbutveckling.
- .NET 6 SDK
Uppdatera .NET SDK-versionen i global.json
Om du förlitar dig på en global.json fil för att rikta in dig på en specifik .NET SDK-version uppdaterar version du egenskapen till den .NET 6 SDK-version som är installerad. Till exempel:
{
"sdk": {
- "version": "3.1.200"
+ "version": "6.0.100"
}
}
Uppdatera målramverket
Uppdatera projektfilens Target Framework Moniker (TFM) till net6.0:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>
Uppdatera paketreferenser
I projektfilen uppdaterar du attributet för varje Microsoft.AspNetCore.*, Microsoft.EntityFrameworkCore.*, Microsoft.Extensions.*och System.Net.Http.Json paketreferens Version till 6.0.0 eller senare. Till exempel:
<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>
Ta bort bin och obj mappar
Du kan behöva ta bort mapparna bin och obj. Kör dotnet nuget locals --clear all för att rensa NuGet-paketcachen.
Minimal värdmodell
ASP.NET Core-mallarna genererar kod med den nya minimala värdmodellen. Den minimala värdmodellen förenar Startup.cs och Program.cs till en enda Program.cs fil.
ConfigureServices och Configure används inte längre. Appar som migrerar från ASP.NET Core 3.1 till .NET 6 behöver inte använda den minimala värdmodellen och Startup den generiska värd som används av mallarna ASP.NET Core 3.1 stöds fullt ut.
Information om hur du använder Startup med den nya minimala värdmodellen finns i Använda start med den nya minimala värdmodellen.
Information om hur du migrerar till den nya minimala värdmodellen med hjälp av följande mönster som används av ASP.NET Core i .NET 6-mallar finns i Kodexempel som migrerats till den nya minimala värdmodellen i ASP.NET Core i .NET 6 och Migrera från ASP.NET Core i .NET 5 till .NET 6
Uppdatera Razor-klassbibliotek (RCL)
Migrera Razor klassbibliotek (RCL) för att dra nytta av nya API:er eller funktioner som introduceras som en del av ASP.NET Core i .NET 6.
Så här uppdaterar du en RCL som riktar sig till komponenter:
Uppdatera följande egenskaper i projektfilen:
<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> - <TargetFramework>netstandard2.0</TargetFramework> - <RazorLangVersion>3.0</RazorLangVersion> + <TargetFramework>net6.0</TargetFramework> </PropertyGroup>Uppdatera andra paket till de senaste versionerna. De senaste versionerna finns på NuGet.org.
Uppdatera en RCL-riktad MVC genom att uppdatera följande egenskaper i projektfilen:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
Blazor
Om du vill använda alla 5.0-funktioner och 6.0-funktioner för Blazor appar rekommenderar vi följande process:
- Skapa ett nytt 6.0-projekt Blazor från en av Blazor projektmallarna. Mer information finns i Verktyg för ASP.NET Core Blazor.
- Flytta appens komponenter och kod till 6.0-appen och gör ändringar för att implementera de nya funktionerna 5.0 och 6.0.
Uppdatera Docker-avbildningar
För appar som använder Docker uppdaterar du Dockerfile-FROM-instruktioner och skript. Använd en basavbildning som innehåller ASP.NET Core i körmiljö för .NET 6. Överväg följande docker pull kommandoskillnad mellan ASP.NET Core 3.1 och .NET 6:
- docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1
+ docker pull mcr.microsoft.com/dotnet/aspnet:6.0
Som en del av övergången till ".NET" som produktnamn flyttade Docker-avbildningarna från mcr.microsoft.com/dotnet/core-lagringsplatserna till mcr.microsoft.com/dotnet. Mer information finns i .NET 5.0 – Namnändring av Docker-lagringsplats (dotnet/dotnet-docker #1939).
Modellbindningsändringar i ASP.NET Core MVC och Razor Pages
DateTime värden är modellbundna som UTC-tider
I ASP.NET Core 3.1 eller tidigare DateTime var värdena modellbundna som lokal tid, där tidszonen fastställdes av servern.
DateTime värden som är bundna från indataformatering (JSON) och DateTimeOffset värden var bundna som UTC-tidszoner.
I .NET 5 eller senare binder modellbindningen DateTime konsekvent värden med UTC-tidszonen.
Om du vill behålla det tidigare beteendet tar du bort DateTimeModelBinderProvider i Startup.ConfigureServices:
services.AddControllersWithViews(options =>
options.ModelBinderProviders.RemoveType<DateTimeModelBinderProvider>());
ComplexObjectModelBinderProvider
\
ComplexObjectModelBinder ersätta ComplexTypeModelBinderProvider \ ComplexTypeModelBinder
För att lägga till stöd för modellbindning C# 9 posttyperär ComplexTypeModelBinderProvider:
- Kommenterat som föråldrat.
- Inte längre registrerad som standard.
Appar som förlitar sig på förekomsten av ComplexTypeModelBinderProvider i ModelBinderProviders-samlingen måste referera till den nya binder-providern:
- var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexTypeModelBinderProvider>();
+ var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexObjectModelBinderProvider>();
UseDatabaseErrorPage föråldrad
Mallarna ASP.NET Core 3.1 som innehåller ett alternativ för enskilda användarkonton genererar ett anrop till UseDatabaseErrorPage.
UseDatabaseErrorPage är nu föråldrad och bör ersättas med en kombination av AddDatabaseDeveloperPageExceptionFilter och UseMigrationsEndPoint, enligt följande kod:
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();
}
Mer information finns i Obsoleting DatabaseErrorPage middleware (dotnet/aspnetcore #24987).
ASP.NET Core Module (ANCM)
Om ASP.NET Core Module (ANCM) inte var en vald komponent när Visual Studio installerades eller om en tidigare version av ANCM installerades på systemet laddar du ned den senaste .NET Core Hosting Bundle Installer (direkt nedladdning) och kör installationsprogrammet. Mer information finns i Hosting Bundle.
Ändring av programnamn
I .NET 6 WebApplicationBuilder normaliserar du innehållsrotsökvägen så att den slutar med en DirectorySeparatorChar. De flesta appar som migreras från HostBuilder eller WebHostBuilder har inte samma appnamn eftersom de inte är normaliserade. Mer information finns i SetApplicationName
Brytande förändringar
Använd artiklarna i Icke-bakåtkompatibla ändringar i .NET för att hitta icke-bakåtkompatibla ändringar som kan gälla när du uppgraderar en app till en nyare version av .NET.
Mer information finns i följande resurser:
-
Meddelanden GitHub-lagringsplats (
aspnet/Announcements,6.0.0etikett): Innehåller viktig och icke-bakåtkompatibel information. -
Meddelanden GitHub-lagringsplats (
aspnet/Announcements,5.0.0etikett): Innehåller viktig och icke-bakåtkompatibel information.
ASP.NET Core