문제

VS11 베타에서 VS2012 RC로 업그레이드한 후 - 대상을 .NET 4.0에서 .NET 4.5로 수정했습니다.다음 섹션에서 app.config를 확인했습니다.

<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>

위의 내용은 무엇입니까?

VS2012 RC 내에서 새 프로젝트(기존 프로젝트 업그레이드 아님)를 만들려고 할 때 app.config에 위 섹션이 표시되지 않습니다.

도움이 되었습니까?

해결책

이는 영원한 .NET 버전 관리 문제의 부작용입니다..NET 4.5는 .NET Framework의 병렬 버전이 아니며 .NET 4.0 설치를 완전히 대체합니다.3.0 및 3.5와 마찬가지로 .NET 2.0 설치를 대체했습니다.

3.0 및 3.5 업데이트는 매우 온화했으며 프레임워크는 방금 많은 새로운 어셈블리를 획득했습니다.CLR 및 핵심 기본 클래스 어셈블리는 변경되지 않았습니다.많이.

프레임워크 4.5 버전에 포함된 clr.dll 파일의 버전 번호는 여전히 4.0.30319입니다.CLR 4.0 버전과 동일한 버전 번호입니다..NET 4.0 프레임워크를 대상으로 하는 .NET 앱을 실행하는 데 문제가 없습니다.

그러나 해당 프레임워크 버전은 내부적으로 크게 수정되었습니다.Windows 8에서 실행되는 Metro 앱을 관리되는 언어로 작성할 수 있는 언어 프로젝션을 획득했습니다.큰 변경 사항에는 클래스를 한 어셈블리에서 다른 어셈블리로 이동하는 것이 포함되어 휴대폰이나 슬레이트에 배포하는 것이 적당합니다.프로젝트에 추가된 app.exe.config 파일은 사용자에게 필요한 버전이 있는지 확인합니다..config 파일 배포는 선택 사항이지만 .NET 4.0만 설치한 경우 사용자에게는 매우 불투명한 예외 메시지가 표시됩니다.실제로 그것이 어떻게 생겼는지 확실하지 않습니다.4.5가 없을 때 실행되는 자동 설치도 아마도 작동하지 않을 것입니다.

다른 팁

Hans Souttant 가이 핵심의 PE 헤더의 역할 인 키 포인트를 놓치는 모든 일에 정확한 동안.

DotNet 4.5는 DotNet 4.0의 상단에 설치되어 있고 Dotnet 버전 번호를 업데이트하지 않으므로 결과는 DotNet 4.5를 사용하여 구축 된 바이너리가 바이너리의 오래된 DotNet 4.0 버전 번호를 사용합니다. PE 헤더 (4.0.30319).

CLR이 PE 헤더 에서이 값을 사용하여로드 할 DOTNET 프레임 워크의 버전을 결정하고 DOTNET 4.5에 대해 구축 된 어셈블리에 대해이 값이 변경되지 않기 때문에 CLR은 다음과 같습니다. PE 헤더에서 4.0.30319의 어셈블리가 있는지 여부를 알지 못하는 것은 DotNet 4.0 또는 4.5에 연결해야합니다.

CLR 에이 추가 정보를 제공하는 app.config에는 supportedRuntime 요소가 존재합니다. 따라서 DotNet 4.0 만 설치된 시스템에있는 SupportedRuntime 항목을 사용하여 DotNet 4.5 응용 프로그램을 시작하면 CLR은 필요한 버전의 Dotnet이 설치되어 있지 않다는 것을 알리는 데 도움이되는 메시지가 표시됩니다. 동일한 DotNet 4.5 응용 프로그램 없이 응용 프로그램이 실행되기 시작할 수 있지만 나중에 DotNet 4.5를 사용하려고 시도 할 때 충돌이 발생할 수 있습니다. 기능.

VS2012 RC를 사용하여 구축 된 프로젝트 및 DotNet 4.5를 타겟팅하는 동안 SupplodyRuntime 항목이 누락되었을 수 있으며 VS2012 RTM을 사용하여 구축 된 프로젝트에는 항목이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top