F#和.Net版本

rwa*_*ace 4 .net msbuild f#

我正在用F#编写一个程序,我在Visual Studio项目设置中指定了.Net 3.5,这是最高的提供,理论上我可能会得到最好的.

然后我尝试在XP盒子上运行已编译的程序,不要期望它能够工作,只是为了看看会发生什么.不出所料,我刚收到一条错误消息,要求提供适当版本的框架,但令人惊讶的是它并不需要3.5,而是2.0.50727.

另一个难题是我正在使用的MSBuild版本来编译程序的发布版本,我在框架3.5目录中找到了它,但声称是框架2.0和构建引擎3.5.我只是猜测它是正确使用的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
Run Code Online (Sandbox Code Playgroud)

Bri*_*sen 8

这是因为.NET版本有点令人困惑.语言,运行时和库本身都有单独的版本号..NET 3.5在运行时的2.0版本上运行,实际上只是其他程序集的集合.如果您没有引用任何新程序集,那么您的应用程序本质上是一个2.0应用程序,因为.NET 3.5的核心是2.0.

幸运的是,最新版本的库,运行时和C#都称为版本4.

关于.NET的wiki文章有更多细节.