在 VS2010 中将 FSharpx(来自 NuGet)与 F# 2.0 一起使用
Posted
技术标签:
【中文标题】在 VS2010 中将 FSharpx(来自 NuGet)与 F# 2.0 一起使用【英文标题】:Using FSharpx (from NuGet) with F# 2.0 in VS2010 【发布时间】:2013-12-29 13:01:45 【问题描述】:所以我正在 VS2010 中开发一个小型 F# 控制台应用程序,目标是 .Net 3.5。看到有一些不错的助手,我尝试通过 NuGet 添加对 Fsharpx.Core 的引用。
编译时出现警告:
发现同一依赖程序集的不同版本之间存在冲突。
...执行时我得到以下信息:
无法加载文件或程序集“FSharp.Core, Version=2.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。系统找不到指定的文件。
现在,我认为我没有安装 F# 3.0。 FSharpx 是否需要 F# 3.0?如果是这样,这是否意味着我不能在 VS2010 中使用 FSharpx? (自F# 3.0 can't be used in VS2010.)
在这种情况下,是否有适用于 F# 2.0 的 FSharpx 版本?还是我错过了什么?
编辑:有关 F# 库版本的更多信息: Correct version of Fsharp.Core 和 F# compiler and runtime version number confusion。
【问题讨论】:
是的,FSharpx 需要 FSharp.Core 2.3 / 4.3。您可以在 VS2010 中使用它,请参阅 github.com/fsharp/fsharpx/issues/260#issuecomment-24937340 ,您可能也需要绑定重定向。 哦,太糟糕了。 F# 2.0 没有任何版本的 FSharpx 吗? F# 3.0 之前不是 FSharpx 吗?还是用这么老的版本就没意义了? 是的,FSharpx 曾经针对 FSharp.Core 2.0/4.0 但没关系。 【参考方案1】:最后,我自己完成了一个面向 F# 2.0 的 Fsharpx.Core 构建。
这就是我所做的:
-
获取最新源from GitHub。
打开 FSharpx.Core.fsproj,只为这个创建一个新的解决方案。
更改引用以使用旧版本 (2.0.0.0) 的 FSharp.Core
构建!
这很有效,解决了我上面的问题。
这是否可行,因为 FSharpx 源代码包含一个 F# 3.0 编译器?
有点像如何通过使用更新的(来自 .NET 4)编译器来使用 C# 中的一些新功能(如可选参数)但仍以 .NET 3.5 为目标?
【讨论】:
我建议不要这样做。您不需要 F# 3.0 编译器,因为 FSharpx 使用 FSharp.Core 2.3 / 4.3。 FSharp.Core.dll 只是另一个库。 我使用 F# 3.0 编译器来构建 FSharpx,因为它包含在构建中。另外,我认为 FSharpx 可能正在使用一些新的 F# 3.0 功能(如成员 val 或其他)。获得新的 dll 后,我继续为自己的项目使用与以前相同的旧 F# 2.0 编译器。 @Mauricioscheffer 这是您建议不要做的事情吗?在这种情况下,即使在我自己的项目中,FSharp.Core 2.3 也可以作为 FSharp.Core 2.0 的替代品吗? F# 2.0 编译器会愉快地编译我的 F# 2.0 代码并将其链接到 F# 3.0 dll 吗?如果不是很明显,我对 F# 还是很陌生,呵呵。 我不建议将 FSharpx 降级到 FSharp.Core 2.0。相反,设置绑定重定向以在运行时使用 FSharp.Core.dll 2.3。 请问为什么?似乎它编译得很好。我应该期待问题吗?另外,如果我的代码作为插件在另一个应用程序中运行,我无法编辑 app.config 怎么办? (不能添加绑定重定向,对吧?)以上是关于在 VS2010 中将 FSharpx(来自 NuGet)与 F# 2.0 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
在 VS 2010 中将控制台应用程序转换为 WPF 应用程序时遇到问题