Fsharp.Core的正确版本

31

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

我电脑上已安装的FSharp.Core版本(可能是通过安装VS 2013安装的)为4.3.1.0。

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

我想知道什么时候应该使用这些版本,版本号让我感到困惑,我本来希望在NuGet上找到最新的生产版本。

我是否遗漏了什么?

2个回答

48

不应该从nuget获取FSharp.Core。微软目前没有将任何官方的F#位发布到nuget上(尽管这在未来可能会改变)。第三方包通常会捆绑 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进行定位,或者您正在使用某些旧版F#组件,否则这就是您应该为任何新的桌面应用程序使用的版本。
  • 4.3.0.0(F# 3.0/.NET 4)这些与VS 2012一起发布的相同版本。它是为了让您在VS 2013中继续处理F# 3.0项目而不需要将其重定向到3.1而包含的。如果您有一个旧版的F# 3.0桌面项目,还没有准备好切换到3.1,则应使用此版本。
  • 2.3.0.0 (F# 3.0/.NET 2) 这些都是与VS2012一同发布的版本。 只有在你需要针对.NET 2进行开发时才需要使用此版本。请注意,不再开发.NET 2方面的内容(即新功能、版本等),相反会针对.NET 4+的FSharp.Core进行开发;虽然.NET 2的FSharp.Core仍将得到充分支持,但已经停止了更新。
  • 3.3.1.0 (F# 3.1/"Portable") 此版本针对.NET Portable Profile 7(.NET 4.5/Windows Store)。 如果您正在创建Windows商店应用程序的组件并且不关心Silverlight,则可以选择此版本。此档案在VS 2013中新增支持。
  • 2.3.5.1 (F# 3.1/"Portable (Legacy)") 此版本针对.NET Portable Profile 47(.NET 4/Silverlight 5/Windows Store)。 如果您正在创建Silverlight组件,则可以选择此版本。此档案也在VS 2012中得到了支持,并在那个时期被简称为“Portable”。
  • 2.3.5.0 (F# 3.0/"Portable (Legacy)") 此版本针对.NET Portable Profile 47(.NET 4/Silverlight 5/Windows Store)。这些都是包含在VS 2012中的版本。在VS 2013中包含它们是为了使您能够继续在F# 3.0可移植/银光项目上工作。
  • .NET Portable档案是一个大的烦恼,并引起了大量复杂性。此网站有一个很好的摘要帮助理解: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保持最新状态。 输入图像描述

    4
    PITA 是某个缩写词吗? - fahadash
    据我所知,现在推荐使用NuGet。 - bbqfrito
    是的,我同意。我建议将其他答案标记为已接受,以免混淆今天寻找答案的人们。 - Efrain
    1
    @fahadash 在解剖学中的某个部位感到疼痛,其中“解剖学”是指名称也以字母“A”开头的特定身体部位。 - phoog

    10

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

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


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接