命名空间或模块FsCheck未定义

时间:2015-08-07 08:45:30

标签: f# mono paket

我开始在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.

2 个答案:

答案 0 :(得分:1)

您的路径缺少版本。它应该是

#r "./packages/FsCheck.2.0.5/lib/net45/FsCheck.dll"

答案 1 :(得分:1)

  1. 您的项目中是否有paket.references文件?
  2. 你添加了#34; FsCheck"对吗?
  3. 您是否已将项目的目标框架设置为.NET 4.5?
  4. 如果您使用的是Xamarin Studio,则您的项目目标框架可能已设置为.NET 4.0。您可以在项目选项中更改此项>构建>一般

    您还可以在paket.dependencies中指定目标框架。你需要第3步。

    framework: net45
    source https://nuget.org/api/v2
    
    nuget Neo4jClient >= 1.0.0.664
    nuget FsCheck