正确版本的Fsharp.Core

时间:2013-12-02 15:39:40

标签: f#

我正在使用Visual Studio 2013 Ultimate构建一个F#控制台应用程序。目标框架是.Net 4.5

我的计算机上安装的FSharp.Core版本(可能是通过安装VS 2013)是4.3.1.0。

在NuGet上,有两个版本的FSharp.Core,4.0.0发布于2012年4月12日,另一个版本的ID为Fsharp.Core.3 verison 0.0.2发布于2013年3月5日。

我正在寻找关于何时应该使用这些版本的指导,版本编号让我感到困惑,我本来希望在NuGet上找到最新的产品版本。

我错过了什么吗?

2 个答案:

答案 0 :(得分:48)

你不应该从nuget获得FSharp.Core。微软今天没有发布任何正式的F#比特(虽然这可能会在将来发生变化)。第三方软件包通常捆绑 FSharp.Core(因为可能是用于测试/验证第三方组件的版本),但是nuget目前不应该用作获取机制FSharp.Core更新或新版本。

FSharp.Core的版本化故事令人遗憾地相当复杂,绝对不像“更高版本意味着更新”那么简单。要实现的一个关键事项是有2个轴 - 运行时支持的F#版本以及它所针对的.NET框架版本/配置文件。

以下是VS 2013附带的官方FSharp.Core版本(请将这些版本删除在%ProgramFiles(x86)%\Reference Assemblies\Microsoft\FSharp下)。

  • 4.3.1.0 (F#3.1 / .NET 4)这是最新的官方版本。除非您要求以.NET 2为目标,或者您正在使用一些不能与3.1一起使用的旧版F#组件,否则这是您应该用于任何新桌面应用程序的版本。
  • 4.3.0.0 (F#3.0 / .NET 4)这些与VS 2012一同提供。它包含在内,因此您可以继续在VS 2013中处理F#3.0项目而无需重新定位他们到3.1。如果您有一个尚未准备好迁移到3.1的旧版F#3.0桌面项目,则应使用此项。
  • 2.3.0.0 (F#3.0 / .NET 2)这些与VS 2012一起提供的位数相同。使用此功能的唯一原因是,如果您的目标是.NET 2. .NET事情的两个方面还没有进一步发展,顺便说一句 - 将针对.NET 4+的FSharp.Core完成新功能,版本等;仍然完全支持.NET 2 FSharp.Core,但它已被冻结。
  • 3.3.1.0 (F#3.1 /“Portable”)此版本的目标是.NET可移植配置文件7(.NET 4.5 / Windows应用商店)。如果要为Windows应用商店应用创建组件而不关心Silverlight,请使用此选项。 VS 2013中新支持此配置文件。
  • 2.3.5.1 (F#3.1 /“Portable(Legacy)”)此版本面向.NET可移植配置文件47(.NET 4 / Silverlight 5 / Windows应用商店)。如果要创建Silverlight组件,请使用此选项。 VS 2012中也支持此配置文件,当时简称为“便携式”。
  • 2.3.5.0 (F#3.0 /“Portable(Legacy)”)此版本的目标是.NET可移植配置文件47(.NET 4 / Silverlight 5 / Windows应用商店)。这些是VS 2012中包含的相同位。包含在VS 2013中,使您能够继续使用F#3.0便携式/ silverlight项目。

.NET可移植配置文件是一个很大的PITA,并且会导致很多复杂性。本网站有一个很好的摘要,以帮助理解:http://blog.stephencleary.com/2012/05/framework-profiles-in-net.html

因此,对于您的特定场景(新控制台应用),请使用4.3.1.0。

编辑7/2015:

这是一张表,可能比上面的文字墙更好地解释了这个故事。我试图用颜色来表明版本号的动机。您会看到可移植库的版本在VS 2012和2013中有点临时和不一致,但从VS 2015开始,它最终是一致且可预测的。这是刚刚发布的F#4.0的最新版本。

enter image description here

答案 1 :(得分:6)

今天我可能更愿意关注these guidelines

简而言之,you can/should reference FSharp.Core from NuGet