2013-05-02 3 views
10

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

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

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

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

+1

http://stackoverflow.com/questions/3102472/fc-fsx-script-files-and-project-references файла FSX не использует ссылки на проект (также нет fsi). Вам нужно вручную ссылаться на файлы. См. Эту должность для получения помощи. – mydogisbox

+1

Существует более тщательная запись здесь: http://blogs.msdn.com/b/chrsmith/archive/2008/09/12/scripting-in-f.aspx – mydogisbox

+0

Спасибо Крису. Я прочитал несколько ваших писем, но не тот! – user2344035

ответ

5

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

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

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

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

9

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

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

То, что меня отбросило, это то, что VS дает мне squiggly линии, как только я начинаю набирать это (т. Е. #r ""). Он фактически разбирает строку во время разработки. Поэтому, когда я наконец нашел dll, squiggly line ушел. – mac10688