我在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等其他软件包。
关于什么是错的任何想法?
最佳答案
当然可以,但这可能只是一点工作:
如有必要,您应该能够克隆my repo。您会注意到,我的fsprojects文件未引用FSharp.Core的显式版本,因此目标版本和实际版本之间没有混淆。实际上是FSharp.Core 4.1 btw。
如果您使用的是原始解决方案,那么我会先做一个新的解决方案。
将项目设置为.NET 4.6.2(或您喜欢的任何版本)
目标F#4.1
努吉特·苏瓦(Nuget Suave)
添加这一点,nuget将下载FSharp.Core并将其替换为您的项目。那样不是很好。
从您的引用中删除FSharp.Core
从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