다음을 통해 공유


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

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

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

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

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

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

ASP.NET Core

타이틀 변경 형식
ConcurrencyLimiterMiddleware는 더 이상 사용되지 않음 원본 비호환
직렬화를 위한 사용자 지정 변환기가 제거됨 동작 변경
ISystemClock은 더 이상 사용되지 않음 원본 비호환
최소 API: IFormFile 매개 변수에는 위조 방지 검사가 필요함 동작 변경
속도 제한 미들웨어에는 AddRateLimiter가 필요함 동작 변경
보안 토큰 이벤트는 JsonWebToken을 반환함 동작 변경
웹 SDK 프로젝트의 경우 TrimMode는 기본적으로 전체로 설정됨 원본 비호환

컨테이너

타이틀 변경 형식
Alpine 이미지에서 제거된 'ca-certificates' 패키지 이진 파일 비호환
Debian 12로 업그레이드된 Debian 컨테이너 이미지 이진 파일 비호환/동작 변경
기본 ASP.NET Core 포트가 8080으로 변경됨 동작 변경
Alpine 및 Debian 이미지에서 제거된 Kerberos 패키지 이진 파일 비호환
Alpine 이미지에서 ‘libintl’ 패키지가 제거됨 동작 변경
다중 플랫폼 컨테이너 태그는 Linux 전용임 동작 변경
Linux 이미지의 새로운 '앱' 사용자 동작 변경

핵심 .NET 라이브러리

타이틀 변경 형식
null인 경우 활동 작업 이름 동작 변경
AnonymousPipeServerStream.Dispose 동작 동작 변경
사용자 지정 진단 ID를 사용한 API 폐기 원본 비호환
Unix 파일 경로의 백슬래시 매핑 동작 변경
Base64.DecodeFromUtf8 메서드는 공백을 무시함 동작 변경
부울 지원 열거형 형식 지원이 제거됨 동작 변경
Complex.ToString 형식이 <a; b>(으)로 변경되었습니다 동작 변경
드라이브의 현재 디렉터리 경로 열거형 동작 변경
Enumerable.Sum이 일부 입력에 대해 새로운 OverflowException을 throw함 동작 변경
FileStream은 파이프가 닫힐 때 씀 동작 변경
FindSystemTimeZoneById가 새 개체를 반환하지 않음 동작 변경
GC.GetGeneration이 Int32.MaxValue를 반환할 수 있음 동작 변경
Unix에서의 GetFolderPath 동작 동작 변경
GetSystemVersion이 더 이상 ImageRuntimeVersion을 반환하지 않음 동작 변경
ITypeDescriptorContext null 허용 주석 원본 비호환
레거시 Console.ReadKey가 제거됨 동작 변경
메서드 작성기는 HasDefaultValue를 false로 설정한 매개 변수를 생성함 동작 변경
UseShellExecute가 false인 경우 ProcessStartInfo.WindowStyle이 적용됨 동작 변경
RuntimeIdentifier는 런타임이 빌드된 플랫폼을 반환함 동작 변경
Type.GetType은 모든 유효하지 않은 요소 형식에 대해 예외를 throw함 동작 변경

암호화

타이틀 변경 형식 도입
macOS의 AesGcm 인증 태그 크기 동작 변경 미리 보기 1
RSA.EncryptValue 및 RSA.DecryptValue는 더 이상 사용되지 않음 원본 비호환 미리 보기 1

배포

타이틀 변경 형식
호스트가 RID 관련 자산을 결정함 이진 파일 비호환/동작 변경
.NET 모니터에는 distroless 이미지만 포함됨 동작 변경
StripSymbols의 기본값은 true임 동작 변경

Entity Framework Core

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

확장

타이틀 변경 형식
ActivatorUtilities.CreateInstance는 일관되게 동작합니다. 동작 변경
ActivatorUtilities.CreateInstance에 null이 아닌 공급자 필요 동작 변경
일치하지 않는 값으로 인해 ConfigurationBinder을 throw함 동작 변경
ConfigurationManager 패키지는 더 이상 System.Security.Permissions를 참조하지 않음 원본 비호환
DirectoryServices 패키지가 더 이상 System.Security.Permissions를 참조하지 않음 원본 비호환
구성 바인더에 의해 사전에 빈 키가 추가됨 동작 변경
HostApplicationBuilder ctor에서 적용하는 HostApplicationBuilderSettings.Args 동작 변경
ManagementDateTimeConverter.ToDateTime이 현지 시간을 반환함 동작 변경
System.Formats.Cbor DateTimeOffset 서식 변경 동작 변경

전역화

타이틀 변경 형식
날짜 및 시간 변환기가 문화권 인수 적용 동작 변경
TwoDigitYearMax 기본값은 2049임 동작 변경

Interop

타이틀 변경 형식
CreateObjectFlags.Unwrap은 대상 인스턴스에서만 래핑 해제됨 동작 변경
사용자 지정 마샬러에 추가 멤버 필요 원본 비호환
IDispatchImplAttribute API가 제거되었습니다. 이진 파일 비호환
JSFunctionBinding 암시적 공용 기본 생성자가 제거됨 이진 파일 비호환
SafeHandle 형식에는 공용 생성자가 있어야 함 원본 비호환

네트워킹

타이틀 변경 형식
SendFile이 연결 없는 소켓에 대해 NotSupportedException을 throw함 동작 변경
mailto: URI의 사용자 정보를 비교합니다 동작 변경

반영

타이틀 변경 형식
함수 포인터 형식에 더 이상 IntPtr이 사용되지 않음 동작 변경

SDK

타이틀 변경 형식
CLI 콘솔 출력에서는 UTF-8을 사용함 동작 변경/원본 및 이진 파일 비호환
완료 후 콘솔 인코딩이 UTF-8이 아님 동작 변경/이진 파일 비호환
컨테이너는 기본적으로 '최신' 태그를 사용함 동작 변경
'dotnet pack'은 릴리스 구성을 사용합니다. 동작 변경/원본 비호환
'dotnet publish'는 릴리스 구성을 사용합니다. 동작 변경/원본 비호환
-getItem, -getProperty 및 -getTargetResult에 대한 중복 출력 동작 변경
System.Net.Http에 대한 암시적 using이 더 이상 추가되지 않음 동작 변경/원본 비호환
MSBuild 사용자 지정 파생 빌드 이벤트가 더 이상 사용되지 않음 동작 변경
MSBuild는 DOTNET_CLI_UI_LANGUAGE를 준수함 동작 변경
자체 포함되지 않은 런타임 관련 앱 원본/이진 파일 비호환
--arch 옵션이 독립형을 의미하지 않음 동작 변경
'dotnet restore'는 보안 취약성 경고를 생성함 동작 변경
SDK는 더 작은 RID 그래프를 사용함 동작 변경/원본 비호환
DebugSymbols를 false로 설정하면 PDB 생성이 사용하지 않도록 설정됨 동작 변경
.NET SDK에 포함된 소스 링크 원본 비호환
.NET Standard 또는 .NET Framework에서는 트리밍을 사용할 수 없음 동작 변경
.NET 도구에 대해 목록에 없는 패키지는 기본적으로 설치되지 않음 동작 변경
외부 빌드에서 가져온 .user 파일 동작 변경
.NET 8 SDK의 버전 요구 사항 원본 비호환

직렬화

타이틀 변경 형식
대부분의 프로젝트에서 BinaryFormatter가 사용하지 않도록 설정됨 동작 변경
PublishedTrimmed 프로젝트가 반사 기반 직렬화에 실패함 동작 변경
반사 기반 역직렬 변환기는 메타데이터를 적극적으로 확인함 동작 변경

Windows Forms

타이틀 변경 형식
앵커 레이아웃 변경 동작 변경
PictureBox에서 원격 이미지를 로드하기 전에 인증서 확인 동작 변경
DateTimePicker.Text가 빈 문자열임 동작 변경
일부 특성에서 DefaultValueAttribute가 제거됨 동작 변경
ExceptionCollection ctor이 ArgumentException을 throw함 동작 변경
AutoScaleMode에 따라 양식 크기 조정 동작 변경
ImageList.ColorDepth 기본값은 Depth32Bit임 동작 변경
System.Windows.Extensions는 System.Drawing.Common을 참조하지 않음 원본 비호환
TableLayoutStyleCollection이 ArgumentException을 throw함 동작 변경
최상위 양식이 최소 및 최대 크기를 DPI로 조정함 동작 변경
WFDEV002 폐기는 이제 오류임 원본 비호환

참고 항목