正确版本的Fsharp.Core

Jon*_*ats 29 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上找到最新的产品版本.

我错过了什么吗?

lat*_*kin 49

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

FSharp.Core的版本化故事令人遗憾地相当复杂,绝对不像"更高版本意味着更新"那么简单.要实现的一个关键事项是,有两个轴 - 运行时支持的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 2方面没有进一步发展, btw - 将针对.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的最新版本.

在此输入图像描述

  • 什么是PITA的缩写? (2认同)

dus*_*ris 6

今天我可能更愿意遵循这些准则

简而言之,您可以/应该从NuGet引用FSharp.Core