如何在Linux上使用fsharpc从Nuget访问.dll

时间:2016-10-29 11:22:55

标签: .net linux f# nuget

我正在尝试在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

我可以编写简单的程序。

感谢任何帮助;谢谢!

1 个答案:

答案 0 :(得分:0)

要使用SqlProvider,您需要:

open FSharp.Data.Sql而非Fsharp.Data.Sqlprovider

请参阅SqlProvider docs

如果您可以先在F#Interactive中对其进行故障排除,也会有所帮助。