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

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

이 문서에서는 각 호환성이 손상되는 변경을 이진 파일 비호환, 원본 비호환 또는 동작 변경으로 분류합니다.

  • 이진 파일 비호환 - 새 런타임이나 구성 요소에 대해 실행할 때 기존 이진 파일의 동작이 크게 변경될 수 있습니다(예: 로드 또는 실행 실패). 그런 경우 다시 컴파일이 필요합니다.

  • 원본 비호환 - 새 SDK 또는 구성 요소를 사용하여 다시 컴파일하거나 새 런타임을 대상으로 하는 경우 기존 소스 코드를 성공적으로 컴파일하려면 원본을 변경해야 할 수도 있습니다.

  • 동작 변경 - 기존 코드 및 이진 파일은 런타임에 다르게 동작할 수 있습니다. 새 동작이 바람직하지 않은 경우 기존 코드를 업데이트하고 다시 컴파일해야 합니다.

ASP.NET Core

ASP.NET Core 7의 주요 변경 내용을 참조하세요.

핵심 .NET 라이브러리

타이틀 변경 유형
기본 진단 ID를 사용하는 API 사용되지 않음 원본이 호환되지 않음
기본이 아닌 진단 ID를 사용하는 API 사용되지 않음 원본이 호환되지 않음
별표는 어셈블리 이름 특성 대해 더 이상 허용되지 않습니다. 동작 변경
BinaryFormatter serialization API에서 컴파일러 오류를 생성 원본이 호환되지 않음
BrotliStream은 정의되지 않은 CompressionLevel 값을 더 이상 허용하지 않음 바이너리 비호환
Visual Studio의 C++/CLI 프로젝트 원본이 호환되지 않음
리플렉션 호출 API 예외에 대한 변경 내용 바이너리 비호환
수집 불가능한 AssemblyLoadContext의 수집 가능한 어셈블리 바이너리 비호환
DateTime 추가 메서드 정밀도 변경 동작 변경
NaN에 대한 메서드 동작 변경과 동일 바이너리 비호환
EventSource 콜백 동작 동작 변경
PatternContext<T>에 대한 제네릭 형식 제약 조건 이진/소스 호환되지 않음
레거시 FileStream 전략이 제거됨 바이너리 비호환
이전 프레임워크에 대한 라이브러리 지원 이진/소스 호환되지 않음
숫자 형식 문자열의 최대 전체 자릿수 바이너리 비호환
범위가 수정된 정규식 패턴 동작 변경
SerializationFormat.Binary는 사용되지 않습니다 이진/소스 호환되지 않음
System. Drawing.Common 구성 스위치가 제거됨 동작 변경
System.Runtime.CompilerServices.Unsafe NuGet 패키지 동작 변경
기호 링크의 시간 필드 바이너리 비호환
연결된 캐시 항목 추적 바이너리 비호환
BrotliStream에 대한 CompressionLevel 유효성 검사 바이너리 비호환

구성

타이틀 변경 유형
app.config의 System.diagnostics 항목 바이너리 비호환

암호화

타이틀 변경 유형
EnvelopedCms 암호 해독은 래핑을 두 번 해제하지 않음 바이너리 비호환
동적 X509ChainPolicy 검증 시간 바이너리 비호환
식별 이름의 X500DistinguishedName 구문 분석 바이너리 비호환

배포

타이틀 변경 유형
기본적으로 모든 어셈블리가 잘림 원본이 호환되지 않음
다단계 조회가 사용하지 않도록 설정됨 바이너리 비호환
64비트 Windows의 x86 호스트 경로 동작 변경
TrimmerDefaultAction 더 이상 사용되지 않음 원본이 호환되지 않음

Entity Framework Core (엔티티 프레임워크 코어)

EF Core 7의 주요 변경 사항을 참조하세요.

확장

타이틀 변경 유형
구성을 사전에 바인딩하면 값이 확장됨 동작 변경
Windows Shell에서 시작되는 앱에 대한 ContentRootPath 바이너리 비호환
환경 변수 접두사 바이너리 비호환

전역화

타이틀 변경 유형
Windows Server에서 세계화 API가 ICU 라이브러리 사용 바이너리 비호환

Interop

타이틀 변경 유형
에뮬레이션의 동안의 RuntimeInformation.OSArchitecture 바이너리 비호환

.NET 마우이

타이틀 변경 유형
생성자가 구체적 형식 대신 기본 인터페이스 허용 바이너리 비호환
흐름 방향 도우미 메서드가 제거됨 이진/소스 호환되지 않음
새 UpdateBackground 매개 변수 바이너리 비호환
ScrollToRequest 속성 이름이 변경됨 이진/소스 호환되지 않음
일부 Windows API가 제거됨 이진/소스 호환되지 않음

네트워킹

타이틀 변경 유형
AllowRenegotiation 기본값은 false임 이진/소스 호환되지 않음
Linux의 사용자 지정 ping 페이로드 바이너리 비호환
Socket.End 메서드가 ObjectDisposedException을 throw하지 않음 바이너리 비호환

SDK 및 MSBuild

타이틀 변경 유형
게시 전용 자동 RuntimeIdentifier 이진/소스 호환되지 않음
CLI 콘솔 출력에서는 UTF-8을 사용함 이진/소스 호환되지 않음
완료 후 콘솔 인코딩이 UTF-8이 아님 바이너리 비호환
.NET 7에서사용자 지정 형식의 MSBuild serialization 이진/소스 호환되지 않음
병렬 SDK 설치 이진/소스 호환되지 않음
루트 폴더의 도구 매니페스트 동작 변경
.NET 7 SDK의 버전 요구 사항 동작 변경
dotnet test: -a--arch 대신 별칭 --test-adapter-path로 전환 이진/소스 호환되지 않음
dotnet test: -r--runtime 대신 별칭 --results-dir로 전환 이진/소스 호환되지 않음
--output 옵션이 더 이상 솔루션 수준 명령에 유효하지 않음 이진/소스 호환되지 않음
SDK는 더 이상 ResolvePackageDependencies를 호출하지 않음 원본이 호환되지 않음

직렬화

타이틀 변경 유형
DataContractSerializer는 -0을 역직렬화할 때 기호를 유지 바이너리 비호환
선행 또는 후행 공백을 가진 버전 형식 역직렬화 바이너리 비호환
JsonSerializerOptions 복사 생성자에 JsonSerializerContext가 포함됨 바이너리 비호환
개체 형식에 대한 다형 serialization 바이너리 비호환
System.Text.Json 원본 생성기 대체 바이너리 비호환

윈도우 폼즈 (Windows Forms)

타이틀 변경 유형
폐기 및 경고 원본이 호환되지 않음
일부 API가 ArgumentNullException을 throw함 바이너리 비호환

WPF (Windows Presentation Foundation, 윈도우 프레젠테이션 파운데이션)

타이틀 변경 유형
텍스트 편집기에서 복원된 끌어서 놓기 작업 동작 동작 변경

XML 및 XSLT

타이틀 변경 유형
XmlSecureResolver는 사용되지 않음 이진/소스 호환되지 않음

참고 항목