.NET 런타임 및 .NET SDK는 다양한 주파수에서 새로운 기능을 추가합니다. 일반적으로 SDK는 런타임보다 더 자주 업데이트됩니다. 이 문서에서는 런타임 및 SDK 버전 번호를 설명합니다.
.NET은 매년 11월에 새 주 버전을 릴리스합니다. .NET 6 또는 .NET 8과 같은 짝수 번호가 매겨진 릴리스는 LTS(장기 지원)입니다. LTS 릴리스는 3년 동안 무료 지원과 패치를 가져옵니다. 홀수 번호가 매겨진 릴리스는 기본 지원입니다. 표준 기간 지원 릴리스는 18개월 동안 무료 지원 및 패치를 받습니다.
버전 관리 세부 정보
.NET 런타임에는 시맨틱 버전을 따르는 major.minor.patch 접근 방식이 있습니다.
그러나 .NET SDK는 의미 체계 버전 지정을 따르지 않습니다. .NET SDK는 더 빠르게 릴리스되며 해당 버전 번호는 정렬된 런타임과 SDK 자체의 부 릴리스 및 패치 릴리스를 모두 전달해야 합니다.
.NET SDK 버전 번호의 처음 두 위치는 릴리스된 .NET 런타임 버전과 일치합니다. SDK의 각 버전은 이 런타임 또는 더 낮은 버전에 대한 애플리케이션을 만들 수 있습니다.
SDK 버전 번호의 세 번째 위치는 부 번호와 패치 번호를 모두 전달합니다. 소수 버전은 100으로 곱해집니다. 마지막 두 자리 숫자는 패치 번호를 나타냅니다. 부 버전 1, 패치 버전 2는 102로 표시됩니다. 예를 들어 런타임 및 SDK 버전 번호의 가능한 시퀀스는 다음과 같습니다.
변화 | .NET 런타임 | .NET SDK(*) | 비고 |
---|---|---|---|
초기 릴리스 | 5.0.0 | 5.0.100 | 초기 릴리스입니다. |
SDK 패치 | 5.0.0 | 5.0.101 | 이 SDK 패치에서는 런타임이 변경되지 않았습니다. SDK 패치는 SDK 패치에서 마지막 숫자를 증가시킵니다. |
런타임 및 SDK 패치 | 5.0.1 | 5.0.102 | 런타임 패치는 런타임 패치 번호를 증가시킵니다. SDK 패치는 SDK 패치에서 마지막 숫자를 증가시킵니다. |
SDK 기능 변경 | 5.0.1 | 5.0.200 | 런타임 패치는 변경되지 않았습니다. 새 SDK 기능으로 SDK 패치의 첫 번째 숫자가 증가합니다. |
런타임 패치 | 5.0.2 | 5.0.200 | 런타임 패치는 런타임 패치 번호를 증가시킵니다. SDK는 변경되지 않습니다. |
앞의 표에서 다음과 같은 여러 정책을 볼 수 있습니다.
- 런타임 및 SDK는 주 버전과 부 버전을 공유합니다. 지정된 SDK 및 런타임에 대한 처음 두 숫자는 일치해야 합니다. 앞의 모든 예제는 .NET 5.0 릴리스 스트림의 일부입니다.
- 런타임의 패치 버전은 런타임이 업데이트될 때만 변경됩니다. SDK 패치 번호는 런타임 패치에 대해 업데이트되지 않습니다.
- SDK의 패치 버전은 SDK가 업데이트될 때만 업데이트됩니다. 런타임 패치에는 SDK 패치가 필요하지 않을 수 있습니다.
참고:
- 런타임 기능 업데이트 전에 SDK에 10개의 기능 업데이트가 있는 경우 버전 번호는 1000 시리즈로 롤됩니다. 버전 5.0.1000은 버전 5.0.900을 따릅니다. 이 상황은 발생하지 않을 것으로 예상됩니다.
- 기능 릴리스가 없는 99개의 패치 릴리스는 발생하지 않습니다. 릴리스가 이 숫자에 가까워지면 기능 릴리스가 강제로 적용됩니다.
dotnet/designs 리포지토리의 초기 제안에서 자세한 내용을 볼 수 있습니다.
의미 체계 버전 관리
.NET 런타임은 버전 번호의 다양한 부분을 사용하여 변경의 정도와 유형을 설명하는 버전 관리 사용을 채택하는 MAJOR.MINOR.PATCH
를 대략적으로 준수합니다.
MAJOR.MINOR.PATCH[-PRERELEASE-BUILDNUMBER]
선택 사항 PRERELEASE
및 BUILDNUMBER
파트는 지원되는 릴리스에 포함되지 않으며 야간 빌드, 원본 대상의 로컬 빌드 및 지원되지 않는 미리 보기 릴리스에만 존재합니다.
런타임 버전 번호 변경
MAJOR
는 1년에 한 번 증가하며 다음을 포함할 수 있습니다.- 제품의 중요한 변경 또는 새 제품 방향.
- API에는 호환성을 깨는 변경이 적용되었습니다. 호환성이 손상되는 변경 내용을 수락할 수 있는 높은 기준이 있습니다.
- 기존 종속성의 최신
MAJOR
버전이 채택됩니다.
주 릴리스는 1년마다 한 번씩 발생하며, 짝수 번호가 매겨진 버전은 LTS(장기 지원) 릴리스입니다. 이 버전 관리 체계를 사용하는 첫 번째 LTS 릴리스는 .NET 6입니다. 최신 비 LTS 버전은 .NET 9입니다.
MINOR
는 다음과 같은 경우 증가합니다.- 공용 API 노출 영역이 추가됩니다.
- 새 동작이 추가됩니다.
- 기존 종속성의 최신
MINOR
버전이 채택됩니다. - 새 종속성이 도입되었습니다.
PATCH
는 다음과 같은 경우 증가합니다.- 버그 수정이 이루어집니다.
- 최신 플랫폼에 대한 지원이 추가됩니다.
- 기존 종속성의 최신
PATCH
버전이 채택됩니다. - 다른 변경 내용은 이전 사례 중 하나에 맞지 않습니다.
여러 변경 내용이 있는 경우 개별 변경 내용의 영향을 받는 가장 높은 요소가 증가하며 다음 요소는 0으로 다시 설정됩니다. 예를 들어, MAJOR
가 증가하면 MINOR.PATCH
가 0으로 재설정됩니다.
MINOR
증가하면 PATCH
0으로 다시 설정되지만 MAJOR
동일하게 유지됩니다.
파일 이름의 버전 번호
.NET용으로 다운로드된 파일은 예를 들어 dotnet-sdk-5.0.301-win-x64.exe
버전을 전달합니다.
미리 보기 버전
미리 보기 버전은 버전 -preview.[number].[build]
번호에 추가됩니다. 예: 6.0.0-preview.5.21302.13
.
서비스 버전
릴리스가 종료된 후 릴리스 분기는 일반적으로 일일 빌드 생성을 중지하고 대신 서비스 빌드를 생성하기 시작합니다. 서비스 버전은 버전에 -servicing-[number]
추가됩니다. 예: 5.0.1-servicing-006924
.
.NET 런타임 호환성
.NET 런타임은 버전 간에 높은 수준의 호환성을 유지합니다. .NET 앱은 일반적으로 새 주 .NET 런타임 버전으로 업그레이드한 후에도 계속 작동해야 합니다.
각 주요 .NET 런타임 버전에는 의도적이고 신중하게 검사되고 문서화된 호환성이 손상되는 변경 내용이 포함되어 있습니다. 문서화된 호환성을 깨뜨리는 변경 사항은 업그레이드 후 앱에 영향을 미칠 수 있는 문제의 유일한 원인이 아닙니다. 예를 들어 .NET 런타임의 성능 향상(호환성이 손상되는 변경으로 간주되지 않음)은 앱이 해당 버전에서 작동하지 않는 잠재적인 앱 스레딩 버그를 노출할 수 있습니다. 대형 앱은 새 .NET 런타임 주 버전으로 업그레이드한 후 몇 가지 수정이 필요합니다.
기본적으로 .NET 앱은 지정된 .NET 런타임 주 버전에서 실행되도록 구성되므로 새 .NET 런타임 주 버전에서 실행되도록 앱을 업그레이드하는 것이 좋습니다. 그런 다음 업그레이드 후 앱을 다시 테스트하여 문제를 식별합니다.
앱 다시 컴파일을 통해 업그레이드할 수 없다고 가정합니다. 이 경우 .NET 런타임은 컴파일된 버전보다 더 높은 주 .NET 런타임 버전에서 앱을 실행할 수 있도록 추가 설정을 제공합니다. 이러한 설정은 앱을 더 높은 주 .NET 런타임 버전으로 업그레이드하는 데 관련된 위험을 변경하지 않으며, 업그레이드 후에도 앱을 다시 테스트해야 합니다.
.NET 런타임은 이전 .NET 런타임 버전을 대상으로 하는 라이브러리 로드를 지원합니다. 최신 주 .NET 런타임 버전으로 업그레이드된 앱은 이전 .NET 런타임 버전을 대상으로 하는 라이브러리 및 NuGet 패키지를 참조할 수 있습니다. 앱에서 참조하는 모든 라이브러리 및 NuGet 패키지의 대상 런타임 버전을 동시에 업그레이드할 필요가 없습니다.
참고하십시오
.NET