2014-04-15 3 views
0

.NET 3.5 SP1 플랫폼으로 C# 프로젝트를 빌드합니다. 내 코드가 컴파일되고 다른 .NET 플랫폼 버전도 컴파일됩니다. 내 코드에서 현재 .NET Framework 버전을 가져와야합니다. 콘솔 출력 (I 레지스트리에서 얻을 설치된 버전에 대한 정보) : 현재 .NET Framework 버전을 얻으려면

Installed .NET Framework versions: 
v2.0.50727  2.0.50727.5420 SP2 
v3.0 3.0.30729.5420 SP2 
v3.5 3.5.30729.5420 SP1 
v4.5.1 Client 4.5.50938 
v4.5.1 Full  4.5.50938 
v4.0 Client  4.0.0.0 
*** 
Current .NET Framework version: 2.0.50727.5477 
Press any key for exit... 

내가 이해 .NET 3.0 및 3.5는 .NET 2.0을 기반으로하지만, 내가 대신, 현재의 플랫폼의 정확한 버전을 얻을 필요가있다 기본 플랫폼 버전.

  1. 왜 내가 대신 3.5.30729.54202.0.50727.5477합니다 (Environment.Version를 통해) 거죠?
  2. 버전 문자열의 마지막 번호에 .5420 대신에 .55477이있는 이유는 무엇입니까?
  3. 현재 .NET Framework의 정확한 버전을 얻으려면 어떻게해야합니까?

내 코드는 this article을 기반으로합니다 솔루션의 모든 프로젝트는 .NET 프레임 워크의 올바른 버전을 대상으로하는

static void Main(string[] args) { 
    NetFrameworkInfo[] frameworks = 
    ExtendedEnvironment.GetInstalledNetFameworkVersions(); 
    Console.WriteLine("Installed .NET Framework versions:"); 
    foreach (NetFrameworkInfo item in frameworks) { 
    Console.WriteLine(item); 
    } 
    Console.WriteLine("***"); 
    Version version = Environment.Version; 
    Console.WriteLine("Current .NET Framework version: {0}", version); 
    Console.WriteLine("Press any key for exit..."); 
    Console.ReadKey(); 
} 
+0

해결할 필요가없는 종류의 문제입니다. 특히 "4.5.1 클라이언트"를 열거하면 존재하지 않습니다. major.minor.build 번호 만 안정적이며 Windows Update를 통해 업데이트 및 보안 패치가 제공되면 수정 번호가 임의로 변경 될 수 있습니다. –

+0

예 : AutoCAD 2009 응용 프로그램은 .Net 3.0을 사용하지만 설치되어있는 경우 .net 3.5 *를 사용할 수도 있습니다. 일부 플러그인은 .Net 3.5 SP1 플랫폼 용으로 컴파일되었습니다. AutoCAD에서 현재 .NET 버전을 확인하고 3.5 SP1 인 경우 추가 플러그인을 다운로드 할 수 있습니다. 3.0에서는 작동하지 않습니다. 그래서 ** 현재 ** .NET 프레임 워크의 정확한 버전을 얻으려면 ** 필요합니다. –

+0

레지스트리가 3.5인지 확인하기 만하면 버전 번호에 전혀 신경 쓰지 않아도됩니다. 알베르토가 어떻게하는지 보여 줬어. –

답변

1

확인합니다.

그것은 당신이 찾고있는 Environment.Version 프로퍼티는 다음과 같습니다

http://msdn.microsoft.com/en-us/library/system.environment.version%28v=vs.110%29.aspx

Version ver = Environment.Version; 
Console.WriteLine("CLR Version {0}", ver.ToString()); 
+0

내 주제를 부주의하게 읽었습니다 (마지막 출력 문자열에서 사용). –

+0

http://msdn.microsoft.com/en-us/library/vstudio/bb822049%28v=vs.100%29.aspx 지금까지 '1.0', '1.1','2.0', '4'. 이것이 당신을 혼란스럽게 만들었습니다. – Andrew

0

당신의 답은 여기에 있습니다 : https://msdn.microsoft.com/en-us/library/bb822049(v=vs.110).aspx

.NET Framework 버전은 CLR 버전과 동일하지 않습니다. CLR은 .NET Framework의 구성 요소 일뿐입니다. 따라서 .NET Framwork 버전 3.0 및 3.5는 CLR 버전 2.0을 사용합니다.

테스트 프로그램이 .NET Framework의 정확한 버전을 얻고 있습니다. 그러나 실제로 "현재 CLR 버전"일 때 Environment.Version을 "현재 .NET Framework 버전"으로 잘못 레이블링합니다. 이 값으로 앤드류 국가가 제공하는 링크 :

은 공용 언어 런타임의 주요 미성년자 구축하고, 개정 번호를 설명하는 버전 개체를 가져옵니다.

관련 문제