Скрипты не распознают FSharp.Data

В некотором роде новичок F #. Я пытаюсь проверить некоторые из моего кода XmlTypeProvider в интерактивном окне, сначала введя его в файл script (fsx). Файл script не распознает следующие

open FSharp.Data  // gives "The namespace or module 'FSharp' is not defined"

Все добавлено в ссылку, и файлы .fs, похоже, не имеют проблем с поиском ссылки XmlTypeProvider, но по какой-то причине script в том же проекте этого не делает. Я даже получил код для работы в файле .fs.

Я добавил FSharp.Data с nuget и все, кажется, правильно добавили. Что мне здесь не хватает?

Ответ 1

Добавьте ссылку в script в папку пакетов nuget, содержащую файл FSharp.Data.dll. Эта папка также содержит конструктор dll (FSharp.Data.DesignTime.dll)

#r @"<your nuget packages folder>\FSharp.Data.2.1.0\lib\net40\FSharp.Data.dll"

Ответ 2

Кстати, я просто отлаживал эту ошибку на прошлой неделе. Существует по существу три причины:

  • Файл не найден. Самое очевидное, что F # на самом деле не может найти файл dll. Убедитесь, что ссылка правильная (проверьте ссылки в свойствах проекта) или убедитесь, что ваш #r указывает на правый файл (при использовании файла F # script)

  • Поставщику типа не доверяют. Поставщик типа заблокирован Visual Studio. Это может произойти, если вы нажмете "Отключить" при первом загрузке провайдера. Чтобы исправить это, перейдите в "Инструменты" - "Параметры" - "Инструменты F #" - "Поставщики типов" и включите поставщика типов (отметьте "Доверенные" ).

  • DLL блокируется ОС. Наконец, если dll поступает из ненадежного источника, Windows может блокировать его (особенно это происходит, если вы загружаете файл zip и извлеките файл с помощью Windows). Чтобы разблокировать файл, перейдите к свойствам файла и нажмите "Разблокировать". Существует хорошее описание здесь..