2010-05-30 6 views
4

현재 Visual Studio 프로젝트 설정에서 .Net 3.5를 지정하기 위해 지정한 F # 프로그램을 작성 중입니다.이 정보는 이론상 가장 높습니다. 최고가.F # 및 .Net 버전

그런 다음 XP 상자에서 컴파일 된 프로그램을 실행 해 보았습니다. 작동하지 않을 것이지만 실제로 어떤 일이 일어날지를 보았습니다. 당연히 나는 프레임 워크의 적절한 버전을 요구하는 오류 메시지를 받았지만 놀랍게도 3.5가 아니라 2.0.50727이었다.

추가 퍼즐은 프레임 워크 3.5 디렉토리에서 발견되었지만 프레임 워크 2.0이고 엔진 3.5를 빌드한다고 주장하는 프로그램의 릴리스 버전을 컴파일하는 데 사용하는 MSBuild의 버전입니다. 필자는 MSBuild의 올바른 버전이 가장 높은 프레임 워크 버전 인 F #과 일치하는 것으로 생각했기 때문에 추측했습니다. 대상을 지정할 수 있지만 다른 버전을 사용해야합니까? 누구나 무슨 일이 일어나는지 알 겠어?

C:\Windows>dir/s msbuild.exe 
Volume in drive C is OS 
Volume Serial Number is 0422-C2D0 

Directory of C:\Windows\Microsoft.NET\Framework\v2.0.50727 

27/07/2008 19:03   69,632 MSBuild.exe 
       1 File(s)   69,632 bytes 

Directory of C:\Windows\Microsoft.NET\Framework\v3.5 

29/07/2008 23:40   91,136 MSBuild.exe 
       1 File(s)   91,136 bytes 

Directory of C:\Windows\Microsoft.NET\Framework\v4.0.30319 

18/03/2010 16:47   132,944 MSBuild.exe 
       1 File(s)  132,944 bytes 

Directory of C:\Windows\winsxs\x86_msbuild_b03f5f7f11d50a3a_6.0.6000.16386_none_815e96e1b0e084be 

20/10/2006 02:14   69,632 MSBuild.exe 
       1 File(s)   69,632 bytes 

Directory of C:\Windows\winsxs\x86_msbuild_b03f5f7f11d50a3a_6.0.6000.16720_none_81591d45b0e55432 

27/07/2008 19:00   69,632 MSBuild.exe 
       1 File(s)   69,632 bytes 

Directory of C:\Windows\winsxs\x86_msbuild_b03f5f7f11d50a3a_6.0.6000.20883_none_6a9133e9ca879925 

27/07/2008 18:55   69,632 MSBuild.exe 
       1 File(s)   69,632 bytes 

C:\Windows>cd Microsoft.NET\Framework\v3.5 

C:\Windows\Microsoft.NET\Framework\v3.5>msbuild /ver 
Microsoft (R) Build Engine Version 3.5.30729.1 
[Microsoft .NET Framework, Version 2.0.50727.3053] 
Copyright (C) Microsoft Corporation 2007. All rights reserved. 

3.5.30729.1 

답변

8

. NET 버전이 약간 혼란 스럽기 때문입니다. 언어, 런타임 및 라이브러리 자체에는 모두 별도의 버전 번호가 있습니다. .NET 3.5는 런타임 버전 2.0에서 실행되며 실제로는 추가 어셈블리 모음입니다. 새 어셈블리를 참조하지 않으면 응용 프로그램은 .NET 3.5의 핵심 인 2.0 응용 프로그램입니다.

은 다행히도 최신 버전의 라이브러리, 런타임 및 C# 모든 버전이라고 4.

The wiki article on .NET이에 대한 자세한 내용을 가지고있다.

4

두 가지 버전이 현재있다, 더 구체적으로 F 번호에 대해서 : 비주얼 스튜디오 2010와 함께 제공

  • 버전 - 이것은 당신이 얻을 수있는 최신이고 완전하게되는 .NET 4.0 (위해 설계되었습니다 브라이언이 지적한대로 런타임의 새 버전). 이 버전의 F #은 .NET 4.0 라이브러리에서 사용할 수있는 몇 가지 기능을 사용하므로 .NET 2.0 용으로 컴파일 된 F # 프로그램은 .NET 2.0에서 작동하지 않습니다.

  • Visual Studio 2008 (CTP라고도 함) 용 버전. 이 버전은 2.0 런타임과 호환되는 어셈블리를 생성합니다 (.NET 3.0 및 3.5에서도 사용됨). .NET 2.0 어셈블리 만 사용하는 경우 응용 프로그램은 .NET 2.0에서 작동하지만 WPF (.NET 3.0) 또는 LINQ (.NET 3.5)를 사용하는 경우 응용 프로그램에 최신 .NET이 필요합니다. 어떤 경우

, F 번호 응용 프로그램도 함께 배포해야하는 FSharp.Core.dll F 번호 프로그램에 필요한 일부 기능이 포함 된 F 번호 런타임 (하지만되지 않는, (.NET 4.0 또는 2.0) 버전에 상관없이 .NET에서 사용 가능).

+0

그리고 F #의 두 버전 모두 F # 2.0이라고합니다. –

+0

사실, VS 2010과 함께 제공되는 버전은 F # 4.0이라고 생각합니다. 적어도 .NET 4.0은 있지만 F #이없는 컴퓨터에서 VS 2010에서 생성 된 F # 프로그램을 실행하면 누락 된 DLL FShare.Core.dll 버전 4.0.0.0에 대해 불만을 토로합니다. 그냥 오늘이 문제를 만났습니다 ... –

+0

@NelsBeckman 언어 규격의 버전 4가 아니라 dll이 될 것이므로 F # 4.0은 없습니다. F # 2.0은 이전에 모든 포인트를 릴리스 한 후에 기본적으로 '지금 충분히 안정적입니다.' 그렇다면 유형 공급자를 포함하는 F # 3.0이 있습니다. F # 3.0은 CLR 4.0 및 CLR 4.5에서 DLL 버전 4.0 및 4.3이 제공됩니다. – Henrik