【问题标题】:Correct version of Fsharp.CoreFsharp.Core 的正确版本
【发布时间】:2013-12-18 09:10:42
【问题描述】:

我正在使用 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 版本 0.0.2,于 2013 年 3 月 5 日发布。

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

我错过了什么吗?

【问题讨论】:

    标签: f#


    【解决方案1】:

    您不应该从 nuget 获取 FSharp.Core。微软今天没有向 nuget 发布任何官方 F# 位(尽管这可能在未来发生变化)。 捆绑 FSharp.Core 的第 3 方包很常见(因为大概是用于测试/验证该第 3 方组件的版本),但目前不应将 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 2 方面的事情没有进一步开发,顺便说一句 - 将为 FSharp.Core 针对 .NET 4+ 完成新功能、版本等; .NET 2 FSharp.Core 仍受完全支持,但已冻结。
    • 3.3.1.0 (F# 3.1/"Portable") 此版本针对 .NET 可移植配置文件 7 (.NET 4.5/Windows Store)。如果您正在为 Windows 商店应用程序创建组件并且您不关心 Silverlight,请使用此选项。 VS 2013 新支持此配置文件。
    • 2.3.5.1 (F# 3.1/"Portable (Legacy)") 此版本针对 .NET 可移植配置文件 47 (.NET 4/Silverlight 5/Windows Store)。如果您正在创建 Silverlight 组件,请使用此选项。 VS 2012 也支持此配置文件,当时简称为“便携式”。
    • 2.3.5.0 (F# 3.0/"Portable (Legacy)") 此版本针对 .NET 可移植配置文件 47 (.NET 4/Silverlight 5/Windows Store)。这些与 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 是什么首字母缩写词?
    • AFAIK 建议现在使用 NuGet
    • 是的,我同意。我建议将其他答案标记为已接受,以免混淆今天搜索此答案的人。
    • @fahadash anatomy 中的疼痛, 其中anatomy 是对解剖结构特定部分的引用(其名称也以“a”开头)。
    【解决方案2】:

    今天我可能宁愿关注these guidelines

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-23
      • 2013-03-08
      • 1970-01-01
      • 2014-12-23
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多