我正在尝试在Linux上使用我的fsharp代码中的外部程序集,尽管遵循我看到其他人使用的“-r:filename.dll”练习,但它仍然无法使用。
首先,源代码:
tlewis@dev-aug16:~/dev/fsharp$ cat sqlp.fs
open FSharp.Data.SqlProvider
printfn "hw, sp"
正如你所看到的,我只是打开包装,而不是用它做任何事情。
其次,让我们看看我的nuget目录:
tlewis@dev-aug16:~/dev/fsharp$ find nuget/
nuget/
nuget/SQLProvider.1.0.36
nuget/SQLProvider.1.0.36/SQLProvider.1.0.36.nupkg
nuget/SQLProvider.1.0.36/lib
nuget/SQLProvider.1.0.36/lib/FSharp.Data.SqlProvider.dll
如您所见,我只安装了一个包。
第三,让我们看一下我如何调用fsharpc:
tlewis@dev-aug16:~/dev/fsharp$ fsharpc --warn:5 --nologo -g -r:/home/tlewis/dev/fsharp/nuget/SQLProvider.1.0.36/lib/FSharp.Data.SqlProvider.dll sqlp.fs --target:exe --fullpaths -o exe/sqlp.exe
/home/tlewis/dev/fsharp/sqlp.fs(1,18): error FS0039: The namespace 'SqlProvider' is not defined
我正在使用dll文件的绝对路径,以及“--fullpaths”,正如我见过其他人所做的那样。尽管如此,fsharpc仍然没有找到命名空间。
最后,这是我的fsharp版本;它只是现代ubuntu上apt的标准版本:
tlewis@dev-aug16:~/dev/fsharp$ dpkg -l fsharp
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-======================-================-================-==================================================
ii fsharp 4.0.0.4+dfsg2-2 all functional-first programming language - compiler f
我可以编写简单的程序。
感谢任何帮助;谢谢!
答案 0 :(得分:0)
要使用SqlProvider,您需要:
open FSharp.Data.Sql
而非Fsharp.Data.Sqlprovider
。
请参阅SqlProvider docs。
如果您可以先在F#Interactive中对其进行故障排除,也会有所帮助。