IntelliSense в.fsx и динамически загружаемых сборках

При динамической ссылке на сборки в.fsx, используя #I а также #rVS выделяет следующие типы импортируемых типов и пишет: "Пространство имен или модуль" 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,

Другие вопросы по тегам