繁体   English   中英

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

[英]Why can't I get Suave to work on VS 2017?

我在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这样的其他软件包没有问题。

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

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

在此输入图像描述

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

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

  1. 将项目设置为.NET 4.6.2(或您喜欢的任何东西)
  2. 目标F#4.1
  3. Nuget Suave

添加此点nuget将下载FSharp.Core并将其替换为您的项目。 那样不是很好。

  1. 从引用中删除FSharp.Core
  2. 从Nuget添加FSharp.Core 4.1

你很高兴去:

在此输入图像描述

我还建议您安装Paket for VS2017。 然后,您可以从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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM