Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt uitgelegd hoe u een bestaand ASP.NET Core 3.1-project bijwerkt naar ASP.NET Core in .NET 6. Zie Migreren van ASP.NET Core in .NET 5 naar .NET 6 om een upgrade uit te voeren van ASP.NET Core naar .NET 6.
Vereiste voorwaarden
- Visual Studio 2022 met de workload voor ASP.NET en webontwikkeling.
- .NET 6 SDK
.NET SDK-versie bijwerken in global.json
Als u afhankelijk bent van een global.json
bestand om een specifieke .NET SDK-versie te targeten, werkt u de version
eigenschap bij naar de .NET 6 SDK-versie die is geïnstalleerd. Voorbeeld:
{
"sdk": {
- "version": "3.1.200"
+ "version": "6.0.100"
}
}
Het doelframework bijwerken
Werk de Target Framework Moniker (TFM)- van het projectbestand bij naar net6.0
:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>
Pakketverwijzingen bijwerken
Werk in het projectbestand elk Microsoft.AspNetCore.*
, Microsoft.EntityFrameworkCore.*
, Microsoft.Extensions.*
en System.Net.Http.Json
pakketreferentiekenmerk Version
bij naar 6.0.0 of hoger. Voorbeeld:
<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>
Verwijderen bin
en obj
mappen
Mogelijk moet u de bin
en obj
mappen verwijderen. Voer dotnet nuget locals --clear all
uit om de NuGet-pakketcache te wissen.
Model voor minimale hosting
De ASP.NET Core-sjablonen genereren code met behulp van het nieuwe minimale hostingmodel. Het minimale hostingmodel integreert Startup.cs
en Program.cs
in één Program.cs
bestand.
ConfigureServices
en Configure
worden niet meer gebruikt. Apps die van ASP.NET Core 3.1 naar .NET 6 migreren, hoeven niet het minimale hostingmodel te gebruiken en Startup
de algemene host die wordt gebruikt door de ASP.NET Core 3.1-sjablonen wordt volledig ondersteund.
Als u het nieuwe minimale hostingmodel wilt gebruiken, raadpleegt u Opstarten gebruiken Startup
met het nieuwe minimale hostingmodel.
Als u wilt migreren naar het nieuwe minimale hostingmodel met behulp van het volgende patroon dat wordt gebruikt door de ASP.NET Core in .NET 6-sjablonen, raadpleegt u codevoorbeelden die zijn gemigreerd naar het nieuwe minimale hostingmodel in ASP.NET Core in .NET 6 en Migreren van ASP.NET Core in .NET 5 naar .NET 6
Klassebibliotheken Razor (RCL's) bijwerken
Migreer Razor klassebibliotheken (RCL's) om te profiteren van nieuwe API's of functies die worden geïntroduceerd als onderdeel van ASP.NET Core in .NET 6.
Een RCL bijwerken die is gericht op onderdelen:
Werk de volgende eigenschappen in het projectbestand bij:
<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> - <TargetFramework>netstandard2.0</TargetFramework> - <RazorLangVersion>3.0</RazorLangVersion> + <TargetFramework>net6.0</TargetFramework> </PropertyGroup>
Werk andere pakketten bij naar de nieuwste versies. De nieuwste versies vindt u op NuGet.org.
Als u een RCL voor MVC wilt bijwerken, werkt u de volgende eigenschappen in het projectbestand bij:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net6.0</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
Blazor
Als u alle 5.0-functies en 6.0-functies voor Blazor apps wilt gebruiken, raden we het volgende proces aan:
- Maak een nieuw 6.0-project Blazor op basis van een van de Blazor projectsjablonen. Zie Hulpprogramma's voor ASP.NET Core Blazorvoor meer informatie.
- Verplaats de onderdelen en code van de app naar de 6.0-app die wijzigingen aanbrengt om de nieuwe functies 5.0 en 6.0 te gebruiken.
Docker-installatiekopieën bijwerken
Werk uw Dockerfile-instructies en -scripts bij voor apps die DockerfileFROM
gebruiken. Gebruik een basisinstallatiekopie met de ASP.NET Core in .NET 6 runtime. Houd rekening met het volgende docker pull
opdrachtverschil tussen ASP.NET Core 3.1 en .NET 6:
- docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1
+ docker pull mcr.microsoft.com/dotnet/aspnet:6.0
Als onderdeel van de overgang naar .NET als productnaam zijn de Docker-afbeeldingen verplaatst van de mcr.microsoft.com/dotnet/core
-opslagplaatsen naar mcr.microsoft.com/dotnet
. Zie .NET 5.0 - Naamwijziging docker-opslagplaats (dotnet/dotnet-docker #1939) voor meer informatie.
Wijzigingen in modelbindingen in ASP.NET Core MVC en Razor Pages
DateTime
waarden zijn modelgebonden als UTC-tijden
In ASP.NET Core 3.1 of eerder DateTime
waren waarden modelgebonden als lokale tijd, waarbij de tijdzone werd bepaald door de server.
DateTime
waarden die gebonden zijn aan de invoeropmaak (JSON) en DateTimeOffset
waarden die als UTC-tijdzones zijn gebonden.
In .NET 5 of hoger verbindt DateTime
modelbinding consistent waarden met de UTC-tijdzone.
Als u het vorige gedrag wilt behouden, verwijdert u DateTimeModelBinderProvider
in Startup.ConfigureServices
.
services.AddControllersWithViews(options =>
options.ModelBinderProviders.RemoveType<DateTimeModelBinderProvider>());
ComplexObjectModelBinderProvider
\
ComplexObjectModelBinder
vervangen ComplexTypeModelBinderProvider
\ ComplexTypeModelBinder
Als u ondersteuning wilt toevoegen voor C# 9-recordtypen voor modelbinding, doet u het ComplexTypeModelBinderProvider volgende:
- Geannoteerd als verouderd.
- Niet meer standaard geregistreerd.
Apps die afhankelijk zijn van de aanwezigheid van de ComplexTypeModelBinderProvider
in de ModelBinderProviders
verzameling, moeten verwijzen naar de nieuwe binderprovider:
- var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexTypeModelBinderProvider>();
+ var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexObjectModelBinderProvider>();
UseDatabaseErrorPage
verouderd
De ASP.NET Core 3.1-sjablonen met een optie voor afzonderlijke gebruikersaccounts genereren een aanroep naar UseDatabaseErrorPage.
UseDatabaseErrorPage
is nu verouderd en moet worden vervangen door een combinatie van AddDatabaseDeveloperPageExceptionFilter
en UseMigrationsEndPoint
, zoals wordt weergegeven in de volgende code:
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();
}
Zie Obsoleting DatabaseErrorPage middleware (dotnet/aspnetcore #24987) voor meer informatie.
ASP.NET Core Module (ANCM)
Als de ASP.NET Core Module (ANCM) geen geselecteerd onderdeel was toen Visual Studio werd geïnstalleerd of als er een eerdere versie van de ANCM op het systeem was geïnstalleerd, downloadt u de meest recente .NET Core Hosting Bundle Installer (direct downloaden) en voert u het installatieprogramma uit. Zie Hosting Bundlevoor meer informatie.
Naam van de applicatie wijzigen
In .NET 6 WebApplicationBuilder normaliseert u het hoofdpad van de inhoud om te eindigen met een DirectorySeparatorChar. De meeste apps die worden gemigreerd van HostBuilder of WebHostBuilder hebben niet dezelfde app-naam omdat ze niet zijn genormaliseerd. Zie SetApplicationName voor meer informatie
Brekende wijzigingen bekijken
Zie de volgende bronnen:
- Identity: De standaard Bootstrap-versie van de gebruikersinterface is gewijzigd
- Belangrijke wijzigingen voor migratie van versie 3.1 naar 5.0. ASP.NET Core en Entity Framework Core zijn ook opgenomen in de lijst.
- Belangrijke wijzigingen voor migratie van .NET 5 naar .NET 6: bevat ASP.NET Core en Entity Framework Core.
-
Aankondigingen gitHub-opslagplaats (aspnet/aankondigingen,
6.0.0
label): bevat belangrijke en niet-belangrijke informatie. -
Aankondigingen gitHub-opslagplaats (aspnet/aankondigingen,
5.0.0
label): bevat belangrijke en niet-belangrijke informatie.