.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 라이브러리
암호화
타이틀 | 변경 형식 | 도입 |
---|---|---|
macOS의 AesGcm 인증 태그 크기 | 동작 변경 | 미리 보기 1 |
RSA.EncryptValue 및 RSA.DecryptValue는 더 이상 사용되지 않음 | 원본 비호환 | 미리 보기 1 |
배포
타이틀 | 변경 형식 |
---|---|
호스트가 RID 관련 자산을 결정함 | 이진 파일 비호환/동작 변경 |
.NET 모니터에는 distroless 이미지만 포함됨 | 동작 변경 |
StripSymbols의 기본값은 true임 | 동작 변경 |
Entity Framework Core
확장
전역화
타이틀 | 변경 형식 |
---|---|
날짜 및 시간 변환기가 문화권 인수 적용 | 동작 변경 |
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
참고 항목
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET