이전 버전과의 호환성은 특정 버전의 플랫폼에 대해 개발된 앱이 해당 플랫폼의 이후 버전에서 실행됨을 의미합니다. .NET Framework는 이전 버전과의 호환성을 최대화하려고 합니다. .NET Framework의 한 버전에 대해 작성된 소스 코드는 이후 버전의 .NET Framework에서 컴파일되어야 하며, 한 버전의 .NET Framework에서 실행되는 이진 파일은 이후 버전의 .NET Framework에서 동일하게 동작해야 합니다.
앱에 대한 버전 호환성
기본적으로 앱은 빌드된 .NET Framework 버전에서 실행됩니다. 해당 버전이 없고 앱 구성 파일이 지원되는 버전을 정의하지 않는 경우 .NET Framework 초기화 오류가 발생할 수 있습니다. 이 경우 앱 실행 시도가 실패합니다.
앱이 실행되는 특정 버전을 정의하려면 하나 이상의 <지원되는Runtime> 요소를 앱의 구성 파일에 추가합니다. 각 <supportedRuntime>
요소에는 지원되는 런타임 버전이 나열되며, 첫 번째는 가장 선호하는 버전을 지정하고 마지막은 가장 선호도가 낮은 버전을 지정합니다.
<configuration>
<startup>
<supportedRuntime version="v2.0.50727" />
<supportedRuntime version="v4.0" />
</startup>
</configuration>
자세한 내용은 방법: .NET Framework 4 또는 4.x를 지원하도록 앱 구성을 참조하세요.
구성 요소에 대한 버전 호환성
앱은 실행되는 .NET Framework의 버전을 제어할 수 있지만 구성 요소는 제어할 수 없습니다. 구성 요소 및 클래스 라이브러리는 특정 앱의 컨텍스트에서 로드되므로 앱이 실행되는 .NET Framework 버전에서 자동으로 실행됩니다.
이러한 제한 때문에 호환성 보장은 구성 요소에 특히 중요합니다. .NET Framework 4부터는 해당 구성 요소에 특성을 적용하여 System.Runtime.Versioning.ComponentGuaranteesAttribute 구성 요소가 여러 버전에서 호환되는 수준을 지정할 수 있습니다. 도구는 이 특성을 사용하여 향후 버전의 구성 요소에서 호환성 보장의 잠재적 위반을 감지할 수 있습니다.
이전 버전과의 호환성
.NET Framework 4.5 이상 버전은 이전 버전의 .NET Framework로 빌드된 앱과 호환됩니다. 즉, 이전 버전으로 빌드된 앱 및 구성 요소는 .NET Framework 4.5 이상 버전을 수정하지 않고 작동합니다. 그러나 기본적으로 앱은 개발된 공용 언어 런타임 버전에서 실행되므로 .NET Framework 4.5 이상 버전에서 앱을 실행할 수 있도록 구성 파일을 제공해야 할 수 있습니다. 자세한 내용은 이 문서의 앞부분에 있는 앱 버전 호환성 섹션을 참조하세요.
실제로 .NET Framework의 중요하지 않은 변경 내용과 프로그래밍 기술의 변경으로 인해 이러한 호환성이 손상될 수 있습니다. 예를 들어 .NET Framework 4.5의 성능 향상은 이전 버전에서 발생하지 않은 경합 상태를 노출할 수 있습니다. 마찬가지로.NET Framework 어셈블리에 하드 코딩된 경로를 사용하고, 특정 버전의 .NET Framework와 같음 비교를 수행하고, 리플렉션을 사용하여 프라이빗 필드의 값을 가져오는 것은 이전 버전과 호환되지 않습니다. 또한 .NET Framework의 각 버전에는 일부 앱 및 구성 요소의 호환성에 영향을 줄 수 있는 버그 수정 및 보안 관련 변경 내용이 포함되어 있습니다.
앱 또는 구성 요소가 .NET Framework 4.5 이상 버전에서 예상대로 작동하지 않는 경우 다음 검사 목록을 사용합니다.
앱이 .NET Framework 4.0부터 모든 버전의 .NET Framework에서 실행되도록 개발된 경우 애플리케이션 호환성을 참조하여 대상 .NET Framework 버전과 앱이 실행 중인 버전 간에 변경 내용 목록을 생성합니다.
.NET Framework 3.5 앱이 있는 경우 .NET Framework 4 마이그레이션 문제도 참조하세요.
.NET Framework 2.0 앱이 있는 경우 .NET Framework 3.5 SP1의 변경 내용도 참조하세요.
.NET Framework 1.1 앱이 있는 경우 .NET Framework 2.0의 변경 내용도 참조하세요.
.NET Framework 4.5 또는 해당 지점 릴리스에서 실행되도록 기존 소스 코드를 다시 컴파일하는 경우 또는 기존 소스 코드 베이스에서 .NET Framework 4.5 또는 해당 지점 릴리스를 대상으로 하는 새 버전의 앱 또는 구성 요소를 개발하는 경우 클래스 라이브러리에서 사용되지 않는 형식 및 멤버를 확인합니다. 설명된 해결 방법을 적용합니다. (이전에 컴파일된 코드는 사용되지 않는 것으로 표시된 형식 및 멤버에 대해 계속 실행됩니다.)
.NET Framework 4.5의 변경으로 인해 앱이 중단된 것으로 확인되면 런타임 설정 스키마, 특히 <AppContextSwitchOverrides> 요소를 확인하여 앱의 구성 파일에서 런타임 설정을 사용하여 이전 동작을 복원할 수 있는지 확인합니다.
문서화되지 않은 문제가 발생하는 경우 .NET용 개발자 커뮤니티 사이트에서 문제를 열거나 Microsoft/dotnet GitHub 리포지토리에서 문제를 엽니다.
병렬 실행
문제에 적합한 해결 방법을 찾을 수 없는 경우 .NET Framework 4.5(또는 해당 지점 릴리스 중 하나)는 버전 1.1, 2.0 및 3.5와 나란히 실행되며 버전 4를 대체하는 현재 위치 업데이트입니다. 버전 1.1, 2.0 및 3.5를 대상으로 하는 앱의 경우 대상 컴퓨터에 적절한 버전의 .NET Framework를 설치하여 최상의 환경에서 앱을 실행할 수 있습니다. 병렬 실행에 대한 자세한 내용은 병렬 실행을 참조하세요.
참고하십시오
.NET