F# 使用FSharp.Data

F# 使用FSharp.Data,f#,c#-to-f#,F#,C# To F#,我是F#的新手(但不是C#fwiw),我尝试按照这里的教程进行操作: 我了解到#r不能在类文件中,但必须在脚本文件中,因此在新的F#Console应用程序模板中,我创建了script.fsx并从教程中粘贴: #r "FSharp.Data" open FSharp.Data let googleUrl = "http://www.google.co.uk/search?q=FSharp.Data" let doc = HtmlDocument.Load(googleUrl) 我还通过Nu

我是F#的新手(但不是C#fwiw),我尝试按照这里的教程进行操作:

我了解到#r不能在类文件中,但必须在脚本文件中,因此在新的F#Console应用程序模板中,我创建了script.fsx并从教程中粘贴:

#r "FSharp.Data"

open FSharp.Data

let googleUrl = "http://www.google.co.uk/search?q=FSharp.Data"
let doc = HtmlDocument.Load(googleUrl)
我还通过NuGet package manager添加了FSharp.Data,并在Packages文件夹中看到它。我尝试了FSharp.Data包的“链接”的不同变体,包括教程(#r.../../../../bin/FSharp.Data.dll)中使用的链接,但始终得到“未找到程序集引用或该引用无效”。我可以访问FSharp.Data,但只能访问UnitSystems名称空间,它显然是FSharp.Core的一部分,而不是我想要的HtmlDocument


无论是将Visual Studio for Mac与Mono一起使用,还是在Windows 10上使用Visual Studio 2015/2017,我都会遇到同样的问题。

简单的答案是使用绝对路径而不是相对路径。您需要指定相对于脚本文件所在位置的
FSharp.Data.dll
的正确路径。这似乎“比实际情况更复杂”解决方案例如,我不必在C#项目中这样做。但这就成功了。这只是降低了代码的可移植性,不是吗?现在,如果我将项目移动到同一台计算机上的另一个文件夹,我将不得不改变路径。@jimmyco2008在C#中,你通常不做脚本(可能在2017年)。这通常不是问题,因为指向Fsharp.Data的路径将按如下方式指定:
\r.\packages\Fsharp.Data\lib\net40\Fsharp.Data.dll“
。因此,这确实是一条相对的道路。我确实会移动项目文件夹,并在不同的PC上保持稍微不同的文件夹结构。您可以使用
#I
指令指定文件夹。可能
\uuuu源目录\uuuu
在这里无法直接工作。另外,如果您只使用和fs文件并进行编译,则无需使用
#r
,您只需在VS中添加引用即可。好的,谢谢您提供的信息!我确实看到VS试图在项目的默认位置找到一个相对路径引用的包,我只是无法确定正确的相对路径。我再试试#一般来说,我觉得这是更好的方法,即使是“以防万一您最终使用了另一个包”。简单的答案是使用绝对路径而不是相对路径。您需要指定一个相对于脚本文件所在位置的
FSharp.Data.dll
的正确路径。这似乎“比应该的更复杂”解决方案例如,我不必在C#项目中这样做。但这就成功了。这只是降低了代码的可移植性,不是吗?现在,如果我将项目移动到同一台计算机上的另一个文件夹,我将不得不改变路径。@jimmyco2008在C#中,你通常不做脚本(可能在2017年)。这通常不是问题,因为指向Fsharp.Data的路径将按如下方式指定:
\r.\packages\Fsharp.Data\lib\net40\Fsharp.Data.dll“
。因此,这确实是一条相对的道路。我确实会移动项目文件夹,并在不同的PC上保持稍微不同的文件夹结构。您可以使用
#I
指令指定文件夹。可能
\uuuu源目录\uuuu
在这里无法直接工作。另外,如果您只使用和fs文件并进行编译,则无需使用
#r
,您只需在VS中添加引用即可。好的,谢谢您提供的信息!我确实看到VS试图在项目的默认位置找到一个相对路径引用的包,我只是无法确定正确的相对路径。我再试试#总的来说,我觉得这是更好的方法,即使是“以防万一,你最终会使用另一个软件包”。