.NET 6의 호환성이 손상되는 변경

앱을 .NET 6으로 마이그레이션하는 경우 여기에 나열된 호환성이 손상되는 변경이 영향을 줄 수 있습니다. 변경 내용은 ASP.NET Core 또는 Windows Forms와 같은 기술 영역별로 그룹화됩니다.

이 문서에서는 각 호환성이 손상되는 변경이 이진 파일 호환인지 또는 원본 호환인지 여부를 나타냅니다.

  • 이진 파일 호환 - 기존 이진 파일은 다시 컴파일 없이 성공적으로 로드 및 실행되며 런타임 동작은 변경되지 않습니다.
  • 원본 호환 - 새 런타임을 대상으로 하거나 새 SDK 또는 구성 요소를 사용할 때 소스 코드는 변경 없이 성공적으로 컴파일됩니다.

ASP.NET Core

타이틀 이진 호환 가능 소스 호환 가능
ActionResult<T>는 StatusCode를 200으로 설정합니다. ✔️
AddDataAnnotationsValidation 메서드가 사용되지 않음 ✔️
Microsoft.AspNetCore.App 공유 프레임워크에서 제거되는 어셈블리 ✔️
Blazor: RequestImageFileAsync 메서드에서 매개 변수 이름이 변경됨 ✔️
Blazor: WebEventDescriptor.EventArgsType 속성이 대체됨
Blazor: 바이트 배열 interop ✔️
Changed MessagePack library in @microsoft/signalr-protocol-msgpack ✔️
ClientCertificate 속성이 HttpSys에 대한 재협상을 트리거하지 않음 ✔️
EndpointName 메타데이터가 자동으로 설정되지 않음 ✔️
ID: UI의 기본 부트스트랩 버전이 변경됨
Kestrel: 로그 메시지 특성이 변경됨 ✔️
Microsoft.AspNetCore.Http.Features 분할 ✔️
미들웨어: HTTPS 리디렉션 미들웨어가 모호한 HTTPS 포트에서 예외를 throw함 ✔️
미들웨어: 새 Use 오버로드 ✔️
RC 1에서 최소 API 이름 바꾸기
RC 2에서 최소 API 이름 바꾸기
System.Text.Json을 사용하는 경우 MVC가 IAsyncEnumerable 형식을 버퍼링하지 않음 ✔️
Nullable 참조 형식 주석 변경 ✔️
사용되지 않고 제거된 API ✔️
PreserveCompilationContext는 기본적으로 구성되지 않음 ✔️
Razor: 컴파일러가 더 이상 뷰 어셈블리를 생성하지 않음 ✔️
Razor: 로깅 ID 변경 내용 ✔️
Razor: RazorEngine API가 사용되지 않음으로 표시됨 ✔️
SignalR: Java 클라이언트가 RxJava3으로 업데이트됨 ✔️
TryParse 및 BindAsync 메서드의 유효성이 검사됨

컨테이너

타이틀 이진 호환 가능 소스 호환 가능
컨테이너 이미지의 기본 콘솔 로거 서식 지정 ✔️

.NET 6 컨테이너의 기타 호환성이 손상되는 변경에 대한 자세한 내용은 .NET 6 컨테이너 릴리스 정보를 참조하세요.

핵심 .NET 라이브러리

타이틀 이진 호환 가능 소스 호환 가능
기본이 아닌 진단 ID를 사용하는 API 사용되지 않음 ✔️
Nullable 참조 형식 주석의 변경 내용 ✔️
디버그 메서드의 조건부 문자열 평가 ✔️
Windows의 Environment.ProcessorCount 동작 ✔️
EventSource 콜백 동작 ✔️ ✔️
Unix의 File.Replace는 Windows와 일치하도록 예외를 throw함 ✔️
파일 스트림이 Unix에서 공유 잠금을 사용하여 파일을 잠금 ✔️
FileStream이 더 이상 파일 오프셋을 OS와 동기화하지 않음
ReadAsync 또는 WriteAsync 완료 후 FileStream.Position 업데이트
사용 중지 API에 대한 새 진단 ID ✔️
새 System.Linq.Queryable 메서드 오버로드 ✔️
패키지에서 삭제된 이전 프레임워크 버전 ✔️
매개 변수 이름이 변경됨 ✔️
스트림 파생 형식의 매개 변수 이름 ✔️
DeflateStream, GZipStream 및 CryptoStream의 부분 및 0바이트 읽기 ✔️
Windows 읽기 전용 파일에 타임스탬프 설정 ✔️
표준 숫자 형식 구문 분석 정밀도 ✔️
인터페이스의 정적 추상 멤버 ✔️
StringBuilder.Append 오버로드 및 평가 순서 ✔️
강력한 이름 API가 PlatformNotSupportedException을 throw함 ✔️
System.Drawing.Common, Windows에서만 지원
System.Security.SecurityContext가 사용되지 않는 것으로 표시됨 ✔️
Task.FromResult가 싱글톤을 반환할 수 있음 ✔️
BackgroundService에서 처리되지 않은 예외 ✔️

암호화

타이틀 이진 호환 가능 소스 호환 가능
CreateEncryptor 메서드가 잘못된 피드백 크기에 대해 예외를 throw함 ✔️

배포

타이틀 이진 호환 가능 소스 호환 가능
64비트 Windows의 x86 호스트 경로 ✔️ ✔️

Entity Framework Core

EF Core 6의 호환성이 손상되는 변경

확장

타이틀 이진 호환 가능 소스 호환 가능
AddProvider가 null이 아닌 공급자를 확인함 ✔️
FileConfigurationProvider.Load가 InvalidDataException을 throw함 ✔️
반복되는 XML 요소에 인덱스가 포함됨 ✔️
삭제한 ServiceProvider 분석을 통해 예외를 throw함 ✔️

전역화

타이틀 이진 호환 가능 소스 호환 가능
세계화 고정 모드의 문화권 만들기 및 대/소문자 매핑

Interop

타이틀 이진 호환 가능 소스 호환 가능
인터페이스의 정적 추상 멤버 ✔️

JIT 컴파일러

타이틀 이진 호환 가능 소스 호환 가능
ECMA-335에 따라 호출 인수 강제 변환 ✔️ ✔️

네트워킹

타이틀 이진 호환 가능 소스 호환 가능
Kerberos 및 Negotiate를 위해 SPN에서 포트가 제거됨 ✔️
WebRequest, WebClient, ServicePoint는 사용되지 않음 ✔️

SDK

타이틀 이진 호환 가능 소스 호환 가능
dotnet run에 대한 -p 옵션은 사용되지 않음 ✔️
이전 버전에서 지원되지 않는 템플릿의 C# 코드 ✔️ ✔️
EditorConfig 파일이 암시적으로 포함됨 ✔️
macOS용 apphost 생성 ✔️
게시 출력의 중복 파일에 대한 오류 생성 ✔️
GetTargetFrameworkProperties 및 GetNearestTargetFramework가 ProjectReference 프로토콜에서 제거됨 ✔️
Arm64에 에뮬레이트된 x64의 설치 위치 ✔️
MSBuild, GetType() 호출 지원 중지
.NET을 사용자 지정 위치에 설치할 수 없음 ✔️ ✔️
OutputType이 WinExe로 자동으로 설정되지 않음 ✔️
--no-restore를 사용하여 ReadyToRun을 게시하려면 변경이 필요함 ✔️
runtimeconfig.dev.json 파일이 생성되지 않음 ✔️
자체 포함이 지정되지 않은 경우 RuntimeIdentifier 경고 ✔️
루트 폴더의 도구 매니페스트 ✔️ ✔️
.NET 6 SDK의 버전 요구 사항 ✔️ ✔️
.version 파일에 빌드 버전이 포함되어 있음 ✔️ ✔️
IntermediateOutputPath에 참조 어셈블리 쓰기 ✔️

직렬화

타이틀 이진 호환 가능 소스 호환 가능
DataContractSerializer는 -0을 역직렬화할 때 기호를 유지 ✔️
TimeSpan에 대한 기본 serialization 형식 ✔️
IAsyncEnumerable serialization ✔️
JSON 소스 생성 API 리팩터링 ✔️
컬렉션 속성의 JsonNumberHandlingAttribute ✔️
새 JsonSerializer 소스 생성기 오버로드 ✔️

Windows Forms

타이틀 이진 호환 가능 소스 호환 가능
C# 템플릿이 애플리케이션 부트스트랩을 사용함 ✔️
선택한 TableLayoutSettings 속성이 InvalidEnumArgumentException을 throw함 ✔️
DataGridView 관련 API가 이제 InvalidOperationException을 throw함 ✔️
ListViewGroupCollection 메서드가 새 InvalidOperationException을 throw함 ✔️
NotifyIcon.Text 최대 텍스트 길이가 늘어남 ✔️
필요할 때만 호출되는 ScaleControl ✔️
일부 API가 ArgumentNullException을 throw함 ✔️
노드가 다른 곳에 할당될 경우 TreeNodeCollection.Item이 예외를 throw함 ✔️

XML 및 XSLT

타이틀 이진 호환 가능 소스 호환 가능
잘못된 인덱스에 대한 XNodeReader.GetAttribute 동작 ✔️

참고 항목