我在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'”但是当光标悬停在左侧黄色区域时没有任何建议。 (也许那是因为我使用的是Community Edition?)
无论如何,我在代码中加了open Suave
所以我有:
open Suave
[<EntryPoint>]
let main argv =
startWebServer
0 // return an integer exit code
此时我在Suave下出现红色波形,并且错误消息“未定义名称空间或模块'Suave'。”
如果我在解决方案资源管理器中右键单击Suave然后选择“发送到交互式”,那么我可以在F#Interactive中打开Suave
。
我可以安装和使用像Deedle这样的其他软件包,没有任何问题。
关于什么是错的任何想法?
答案 0 :(得分:4)
当然,你可以,但它可能只是一点点工作:
如果需要,您应该能够克隆my repo。您会注意到我的fsprojects文件没有引用FSharp.Core的显式版本,因此Target和实际版本之间没有混淆。它实际上是FSharp.Core 4.1 btw。
如果您使用原始解决方案,我会先制作一个新解决方案。
添加此点nuget将下载FSharp.Core并将其替换为您的项目。那不是很好。
你很高兴:
我还建议你为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