앱을 .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는 사용되지 않음 | 이진/소스 호환되지 않음 |
참고 항목
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET