2015-08-07 2 views
1

Я начинаю загрязнять руки с помощью F # в Mac OS X, но не могу заставить его работать (версия F # равна 3.1, а версия Mono - 4.0.2). Я использую packet для управления зависимостями и уже установил некоторые библиотеки. Это как мой packet.dependencies файл выглядит следующим образом:пространство имен или модуль FsCheck не определен

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.

Что я делаю неправильно?

EDIT:

Переключение .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

Что дает вам эта ошибка? F # Интерактивный или компилятор? – Foole

+0

@Foole see edit – jarandaf

+0

Я думаю, что обычно система сборки используется для копирования зависимостей в выходной каталог. – Foole

ответ

1

Ваш путь отсутствует версия. Он должен быть

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

все еще получают ту же проблему – jarandaf

1
  1. У вас есть paket.references файл в вашем проекте?
  2. Вы добавили в него «FsCheck»?
  3. Вы настроили целевую структуру вашего проекта на .NET 4.5?

Если вы используете Xamarin Studio, ваша целевая структура проекта, вероятно, установлена ​​на .NET 4.0. Вы можете изменить это в разделе «Параметры проекта»> «Создать»> «Общие».

Вы также можете указать целевую структуру в paket.dependencies. Вам нужен шаг 3, хотя.

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

nuget Neo4jClient >= 1.0.0.664 
nuget FsCheck 

 Смежные вопросы

  • Нет связанных вопросов^_^