1

我开始在 Mac OS X 上使用 F#,但无法正常工作(F# 版本是 3.1,Mono 版本是 4.0.2)。我正在使用数据包进行依赖管理,并且已经安装了一些库。这是我的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.
4

2 回答 2

1

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

#r "./packages/FsCheck.2.0.5/lib/net45/FsCheck.dll"
于 2015-08-07T08:58:37.463 回答
1
  1. 您的项目中有 paket.references 文件吗?
  2. 你添加了“FsCheck”吗?
  3. 您是否将项目的目标框架设置为 .NET 4.5?

如果您使用的是 Xamarin Studio,您的项目目标框架可能设置为 .NET 4.0。您可以在 Project Options > Build > General 中更改此设置。

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

framework: net45
source https://nuget.org/api/v2

nuget Neo4jClient >= 1.0.0.664
nuget FsCheck
于 2015-10-29T09:55:59.087 回答