为什么我不能让Suave在VS 2017上工作?

时间:2017-04-17 22:51:07

标签: visual-studio f# suave

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

首先,我在视频中安装了Suave,它在我的参考文献中显示在mscorlibSystem之间,就像在视频中一样。

然后视频显示以下代码:

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

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

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

open Suave

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

此时我在Suave下出现红色波形,并且错误消息“未定义名称空间或模块'Suave'。”

如果我在解决方案资源管理器中右键单击Suave然后选择“发送到交互式”,那么我可以在F#Interactive中打开Suave

我可以安装和使用像Deedle这样的其他软件包,没有任何问题。

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

1 个答案:

答案 0 :(得分:4)

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

enter image description here

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

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

  1. 将项目设置为.NET 4.6.2(或您喜欢的任何内容)
  2. 目标F#4.1
  3. Nuget Suave
  4. 添加此点nuget将下载FSharp.Core并将其替换为您的项目。那不是很好。

    1. 从参考资料中删除FSharp.Core
    2. 从Nuget添加FSharp.Core 4.1
    3. 你很高兴:

      enter image description here

      我还建议你为VS2017安装Paket。然后,您可以从VS中的“工具”菜单访问它。这样你就可以将Suave和FSharp.core添加到你的paket.references和dependencies文件中,设置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