2014-04-03 3 views
3

microsoft reference source을 사용하려고했지만 문제가 발생했습니다. troubleshooting에 대한 제안대로 올바른 .NET 프레임 워크 버전을 사용하고 있는지 확인하려고했습니다.프로젝트에서 .NET Framework 버전을 어떻게 변경합니까?

enter image description here

내가 다른 곳 버전을 변경해야합니까 :

enter image description here

나는 그러나 당신이 여기에서 볼 수 있듯이 프로젝트의 대상 프레임 워크를 변경 않았다 ILDASM 그러나이 보여?

+0

프로젝트를 재구성 해 보았습니까? –

+0

@ LRNAB 네, 여러 번 Visual Studio를 닫은 후 다시 열었습니다. – Sarien

+0

.Net framework 4.0과 4.5에서 'Metadata version'이 달라야한다고 생각하십니까? – Habib

답변

6

당신이 가진 것은 정확합니다. .NET 4.5 또는 4.5.1을 대상으로하는 프로젝트는 여전히 CLR 버전 4.0.30319 및 mscorlib v4.0.0.0과 같은 핵심 프레임 워크 어셈블리를 사용합니다.

이것은 .NET 버전 3.0, 3.5 및 3.5 SP1에서는 CLR 버전 2.0.50727 및 핵심 프레임 워크 어셈블리 v2.0.0.0을 대상으로합니다. 4.5와 4.5.1처럼, 그들은 새로운 side-by-side 버전이 아니었다. 그들은 방금 기존 어셈블리에 새 어셈블리를 추가했습니다.

ildasm.exe로 선택한 대상을 계속 알 수 있으므로 메타 데이터에 표시되는 System.Runtime.Versioning.TargetFrameworkAttribute 특성을 확인하십시오. CLR은 이것을 확인하여 .NET 4.0 또는 4.5 설치에서 4.5.1을 실행하지 않도록합니다. 필요한 버전을 다운로드 할 수 있습니다. 모양은 다음과 같습니다 (가독성을 위해 수정 됨) :

.custom instance void [mscorlib]System.Runtime.Versioning.TargetFrameworkAttribute::.ctor(string) = 
(01 00 1C 2E 4E 45 54 46 72 61 6D 65 77 6F 72 6B // ....NETFramework 
    2C 56 65 72 73 69 6F 6E 3D 76 34 2E 35 2E 31 01 // ,Version=v4.5.1. 
    00 54 0E 14 46 72 61 6D 65 77 6F 72 6B 44 69 73 // .T..FrameworkDis 
    70 6C 61 79 4E 61 6D 65 14 2E 4E 45 54 20 46 72 // playName..NET Fr 
    61 6D 65 77 6F 72 6B 20 34 2E 35 2E 31)   // amework 4.5.1 
+1

+1, 이것은 좋은 답변입니다. 그래서 당신과 같은 공헌자가있어서 정말 행운입니다. – Habib

0

메타 데이터 버전에서 .Net 프레임 워크 버전을 확인하려는 경우 올바른 방법이 아닙니다.

메타 데이터 버전은 런타임 버전 또는 CLR 버전을 보여줍니다.

.NET Framework 4, 4.5 및 4.5.1에는 CLR 4가 포함되지만 .NET Framework 2.0, 3.0 및 3.5에는 CLR 2.0이 포함됩니다. (CLR은 전혀 버전 3 없었다.)

그래서 닷넷 프레임 워크 4, 4.5, 4.5.1이 즉 V4.0.30319 같은 CLR 버전을 볼 수 있습니다. .NET 프레임 워크 버전을 식별하기 위해 this answer을 볼 수 있습니다.

+0

이것은 "안전하게 가정 할 수 있습니다"를 제외하고는 매우 좋은 답변입니다. 확인되어야합니다. 이 질문에 설명 된 방법이 그렇게하지 못한 것은 맞습니다. –

+0

@BenVoigt, 실제로 응용 프로그램의 .Net 프레임 워크 버전을 식별하기위한 리소스/참조를 찾으려고합니다. 하지만 당신 말이 맞아요, 그 문장을 수정해야합니다 – Habib

관련 문제