IntelliSense в.fsx и динамически загружаемых сборках
При динамической ссылке на сборки в.fsx, используя #I
а также #r
VS выделяет следующие типы импортируемых типов и пишет: "Пространство имен или модуль" XXX "не определен". Это нормально?
Например, в следующем коде
#I @".\Tools\FAKE"
#r "FakeLib.dll"
open Fake
Target "Hello" (fun _ -> trace "hello!")
Run "Hello"
VS основные моменты Fake
и говорит: "Пространство имен или модуль" Fake "не определен", это также подчеркивает Target
а также Run
, У меня есть эта проблема в VS 2010 SP1 и в VS 11 CTP. Эта проблема делает написание сценариев F# немного более сложной задачей, чем могло бы быть.
Кстати, IntelliSence для "общих" типов работает хорошо. FakeLib.dll
а также FakeLib.xml
присутствуют в .\Tools\FAKE
каталог. Код работает хорошо.
Обновление 1 Вот скриншот ситуации. Вы можете видеть, что VS разрешает сборку FakeLib
правильно (во всплывающей подсказке), и при этом Intellisense "видит" стандартные типы (всплывающая подсказка Console
) учебный класс.
Обновление 2 Я думаю, что что-то не так с IntelliSense на моей рабочей станции, потому что он (IntelliSense) ведет себя довольно странно. Когда я запускаю VS и открываю файл.fsx, IntelliSense отказывается разрешать даже стандартные типы / классы, и это не подчеркивает FAKE
классы, это ничего не делает. Но через некоторое время и некоторые манипуляции с кодом IntelliSense начинает работать для стандартных типов и подчеркивает FAKE
типы.
Более того, когда я создал подобный код на своей домашней рабочей станции, проблем не было, IntelliSense работает как надо.
2 ответа
Если вы введете полный путь в директиву #r, вы получите полный IntelliSense. Директива #I, хотя и удобна, не позволяет IntelliSense работать должным образом, хотя код будет работать нормально. Это верно как для свободных скриптов, так и для тех, что встречаются в проектах. Взгляните на проект Томаса Петричека [FSharp.AsyncExtensions](http://github.com/tpetricek/FSharp.AsyncExtensions].
Нет, это не так. Ваш код работает? Intellisense предоставляется для сборок, на которые ссылаются с помощью #r
,