我开始在Mac OS X上弄脏F#但无法使其工作(F#版本为3.1,Mono版本为4.0.2)。我正在使用packet进行依赖关系管理,并且已经安装了一些库。这就是我的packet.dependencies
文件的样子:
source https://nuget.org/api/v2
nuget Neo4jClient >= 1.0.0.664
nuget FsCheck
在mono .paket/paket.exe install
之后,我将相关的依赖项成功下载到packages
文件夹中。自动生成的packet.lock
文件如下所示:
NUGET
remote: https://nuget.org/api/v2
specs:
FsCheck (2.0.5)
FSharp.Core (>= 3.1.2.5)
FSharp.Core (4.0.0.1)
Microsoft.Bcl (1.1.10)
Microsoft.Bcl.Build (>= 1.0.14)
Microsoft.Bcl.Build (1.0.21)
Microsoft.Net.Http (2.2.29)
Microsoft.Bcl (>= 1.1.10)
Microsoft.Bcl.Build (>= 1.0.14)
Neo4jClient (1.0.0.664)
Microsoft.Net.Http
Newtonsoft.Json (>= 6.0.3)
Newtonsoft.Json (7.0.1)
我试图在我的.fs文件中引用这些库:
#if INTERACTIVE
#r "./packages/FsCheck/lib/net45/FsCheck.dll"
#endif
open FsCheck
open FsCheck
语句因The namespace or module 'FsCheck' is not defined
而失败。
我做错了什么?
编辑:
切换到.fsx
(而非.fs
)并删除#if
部分可以正常工作。使用.fs
进行编译但是在运行.exe
时我得到以下异常(我理解这意味着默认情况下.dll
没有捆绑,在这种情况下我想知道常见的做法是什么):
Unhandled Exception:
System.IO.FileNotFoundException: Could not load file or assembly 'FsCheck, Version=2.0.5.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies.
答案 0 :(得分:1)
您的路径缺少版本。它应该是
#r "./packages/FsCheck.2.0.5/lib/net45/FsCheck.dll"
答案 1 :(得分:1)
如果您使用的是Xamarin Studio,则您的项目目标框架可能已设置为.NET 4.0。您可以在项目选项中更改此项>构建>一般
您还可以在paket.dependencies中指定目标框架。你需要第3步。
framework: net45
source https://nuget.org/api/v2
nuget Neo4jClient >= 1.0.0.664
nuget FsCheck