ASP.NET Core 6.0에서 7.0으로 마이그레이션하기
이 문서에서는 기존의 ASP.NET Core 6.0 프로젝트를 ASP.NET Core 7.0으로 변경하는 방법을 설명합니다.
필수 조건
ASP.NET 및 웹 개발 워크로드가 있는 Visual Studio 2022
에서 .NET Core SDK 버전 업데이트 global.json
특정 .NET Core SDK 버전을 대상으로 하는 파일을 사용하는 global.json 경우 설치된 .NET 7.0 SDK 버전으로 속성을 업데이트 version
합니다. 예시:
{
"sdk": {
- "version": "6.0.200"
+ "version": "7.0.100"
}
}
대상 프레임워크 업데이트
프로젝트 파일의 TFM(대상 프레임워크 모니커)을 net7.0
으로 업데이트합니다.
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>net6.0</TargetFramework>
+ <TargetFramework>net7.0</TargetFramework>
</PropertyGroup>
</Project>
패키지 참조 업데이트
프로젝트 파일에서 각 Microsoft.AspNetCore.*, Microsoft.EntityFrameworkCore.*, Microsoft.Extensions.* 및 System.Net.Http.Json 패키지 참조의 Version
특성을 7.0.0 이상으로 업데이트합니다. 예시:
<ItemGroup>
- <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="6.0.9" />
- <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.9" />
- <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="6.0.9" />
- <PackageReference Include="System.Net.Http.Json" Version="6.0.0" />
+ <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="7.0.0" />
+ <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.0" />
+ <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="7.0.0" />
+ <PackageReference Include="System.Net.Http.Json" Version="7.0.0" />
</ItemGroup>
Blazor
.NET 7 기능 채택
이 문서의 앞부분에 있는 지침에 따라 앱을 7.0으로 업데이트한 후 ASP.NET Core 7.0의 새로운 기능 링크를 따라 특정 기능을 채택합니다.
Blazor 앱의 새 7.0 기능을 모두 채택하려면 다음 프로세스를 따르세요.
- Blazor 프로젝트 템플릿 중 하나에서 새 7.0 Blazor 프로젝트를 만듭니다. 자세한 내용은 ASP.NET Core Blazor 도구를 참조하세요.
- 앱의 구성 요소와 코드를 새 7.0 기능을 채택하도록 수정된 7.0 앱으로 이동합니다.
역마샬링된 JavaScript interop 마이그레이션
IJSUnmarshalledRuntime인터페이스를 사용하는 역마샬링된 interop는 사용되지 않으며 JavaScript [JSImport]
/[JSExport]
interop로 대체되어야 합니다.
자세한 내용은 JavaScript JSImport/JSExport interop 및 ASP.NET Core Blazor를 참조하세요.
Blazor WebAssembly 인증은 리디렉션에 기록 상태를 사용합니다.
앱의 Blazor WebAssembly 인증 지원은 URL의 쿼리 문자열 대신 탐색 기록 상태에 의존하도록 변경되었습니다. 결과적으로 쿼리 문자열을 통해 반환 URL을 전달하면 .NET 7에서 성공적으로 로그인한 후 원래 페이지로 다시 리디렉션되지 않습니다.
다음 예제에서는 NavigateTo를 사용하는 리디렉션 URL(?returnUrl=
)을 기반으로 하는 .NET 6 이하를 대상으로 하는 앱에 대한 이전 리디렉션 방법을 보여줍니다.
@inject NavigationManager Navigation
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
@code {
protected override void OnInitialized()
{
Navigation.NavigateTo(
$"authentication/login?returnUrl={Uri.EscapeDataString(Navigation.Uri)}");
}
}
다음 예제에서는 NavigateToLogin를 사용하여 탐색 기록 상태를 기반으로 하는 .NET 7 이상을 대상으로 하는 앱에 대한 새로운 리디렉션 방법을 보여줍니다.
@inject NavigationManager Navigation
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
@using Microsoft.Extensions.Options
@inject IOptionsSnapshot<RemoteAuthenticationOptions<ApiAuthorizationProviderOptions>> OptionsSnapshot
@code {
protected override void OnInitialized()
{
Navigation.NavigateToLogin(OptionsSnapshot.Get(Options.DefaultName).AuthenticationPaths.LogInPath);
}
}
이 변경의 일부로서, SignOutSessionStateManager은 .NET 7 이상에서 사용되지 않으며 NavigateToLogout로 바뀝니다.
다음 예제에서는 Blazor WebAssembly 프로젝트 템플릿에서 생성된 앱의 에서 이전 방법Shared/LoginDisplay.razor
을 보여줍니다.
@inject SignOutSessionStateManager SignOutManager
...
@code{
private async Task BeginLogout(MouseEventArgs args)
{
await SignOutManager.SetSignOutState();
Navigation.NavigateTo("authentication/logout");
}
}
다음 예제에서는 NavigateToLogout를 호출하는 새로운 방법을 보여줍니다. SignOutSessionStateManager의 삽입(@inject
)은 파일 맨 위에 있는 구성 요소의 지시문에서 제거되고 BeginLogOut
메서드는 다음 코드로 업데이트됩니다.
@code{
public void BeginLogOut()
{
Navigation.NavigateToLogout("authentication/logout");
}
}
Program.cs
에서 SignOutSessionStateManager 서비스 등록이 제거됩니다.
- builder.Services.AddScoped<SignOutSessionStateManager>();
자세한 내용은 다음 리소스를 참조하세요.
- [호환성이 손상되는 변경]: webassembly 애플리케이션에서 인증 업데이트
- ASP.NET Core Blazor 라우팅 및 탐색
- ASP.NET Core Blazor WebAssembly 보호
- ASP.NET Core Blazor 인증 및 권한 부여
.NET 6 프로젝트용 .NET WebAssembly 빌드 도구
이제 .NET 7 SDK로 작업할 때 .NET 6 프로젝트에서 .NET WebAssembly 빌드 도구를 사용할 수 있습니다. 새 wasm-tools-net6
워크로드에는 .NET 7 SDK와 함께 사용할 수 있도록 .NET 6 프로젝트에 대한 .NET WebAssembly 빌드 도구가 포함되어 있습니다. 기존 wasm-tools
워크로드는 .NET 7 프로젝트에 대한 .NET WebAssembly 빌드 도구를 설치합니다. 그러나 .NET WebAssembly 빌드 도구의 .NET 7 버전은 .NET 6으로 빌드된 기존 프로젝트와 호환되지 않습니다. .NET 6 및 .NET 7을 모두 지원해야 하는 .NET WebAssembly 빌드 도구를 사용하는 프로젝트는 다중 대상 지정을 사용해야 합니다.
Docker 이미지 업데이트
Docker를 사용하는 앱의 경우 DockerfileFROM
문과 스크립트를 업데이트합니다. ASP.NET Core 7.0 런타임을 포함하는 기본 이미지를 사용합니다. ASP.NET Core 6.0과 7.0 간에 다음 docker pull
명령 차이를 고려합니다.
- docker pull mcr.microsoft.com/dotnet/aspnet:6.0
+ docker pull mcr.microsoft.com/dotnet/aspnet:7.0
호환성이 손상되는 변경 검토
.NET Core 6.0에서 .NET 7.0으로의 호환성이 손상되는 변경 내용은 .NET 7의 호환성이 손상되는 변경 내용을 참조하세요. ASP.NET Core 및 Entity Framework Core이 목록에 포함됩니다.
ASP.NET Core
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기