4

我在https://channel9.msdn.com/Shows/Visual-Studio-Toolbox/Visual-F-Tools上看到了一个视频,其中创建了一个使用 Suave 的项目。我试图准确地遵循正在做的事情,但是我今天刚刚更新的 VS 2017 的安装表现完全不同。

首先,我完全按照视频中的方式安装了 Suave,它出现在我的参考文献中,介于mscorlib和之间System,就像在视频中一样。

然后视频显示以下代码:

[<EntryPoint>]
let main argv = 
    startWebServer
    0 // return an integer exit code

此时 VS 2017 在视频中建议“Open Suave”,因为无法识别 startWebServer。我在编辑器中的文件中复制了相同的代码Program.fs。出现错误消息“未定义值或构造函数'startWebServer'”但当光标悬停在左侧黄色区域时没有任何建议。(也许是因为我使用的是社区版?)

无论如何,我添加open Suave到代码中,所以我有:

open Suave

[<EntryPoint>]
let main argv = 
    startWebServer
    0 // return an integer exit code

此时,我在 Suave 下看到一个红色波浪线,并显示错误消息“未定义命名空间或模块‘Suave’。”

如果我在解决方案资源管理器中右键单击 Suave,然后选择“Send to Interactive”,那么我可以Suave在 F# Interactive 中打开。

我可以毫无问题地安装和使用 Deedle 等其他软件包。

关于什么是错的任何想法?

4

1 回答 1

4

当然,你可以,但这可能只是一点工作:

在此处输入图像描述

如有必要,您应该能够克隆我的仓库。您会注意到我的 fsprojects 文件没有引用 FSharp.Core 的显式版本,因此目标版本和实际版本之间没有混淆。它实际上是 FSharp.Core 4.1 btw。

如果您正在使用原始解决方案,我会先制作一个新解决方案。

  1. 将项目设置为 .NET 4.6.2(或任何你喜欢的)
  2. 目标 F# 4.1
  3. Nuget 温文尔雅

添加这一点 nuget 将下载 FSharp.Core 并在您的项目中替换它。那样不是很好。

  1. 从您的参考文献中删除 FSharp.Core
  2. 从 Nuget 添加 FSharp.Core 4.1

你很高兴:

在此处输入图像描述

我还建议您为 VS2017 安装Paket。然后,您可以从 VS 的“工具”菜单访问它。这样,您只需将 Suave 和 FSharp.core 添加到您的 paket.references 和依赖项文件中,设置redirects: on,从菜单中运行 Paket install 并忘记所有这些版本不匹配的业务。如果您使用大量 fsx 文件,这非常好,因为 paket 会从路径中删除版本号。请查看 GitHub 上解决方案中的 paket.dependencies 和 paket.references 文件:

解决方案根目录中的 paket.dependencies:

framework: = net462
source https://www.nuget.org/api/v2
redirects: on

nuget Suave

项目文件夹中的 paket.references:

Suave
FSharp.Core
于 2017-04-18T05:25:29.050 回答