当使用#I
和#r
动态引用.fsx中的程序集时,VS突出显示了以下导入类型的用法并写入了“未定义名称空间或模块'XXX'”。可以吗?.fsx和动态加载的程序集中的智能感知
例如,在下面的代码
#I @".\Tools\FAKE"
#r "FakeLib.dll"
open Fake
Target "Hello" (fun _ -> trace "hello!")
Run "Hello"
VS突出Fake
并且说“的命名空间或模块‘假’未定义”,它也突出Target
和Run
。我在VS 2010 SP1和VS 11 CTP中遇到了这个问题。这个问题使得编写F#脚本比它可能更难一些。
顺便说一句,IntelliSence为“普通”类型的效果很好。 FakeLib.dll
和FakeLib.xml
存在于.\Tools\FAKE
目录中。代码运行良好。
更新1 下面是情况的截图。你可以看到VS正确地解析了程序集FakeLib
(在工具提示中),并且同时Intellisense“看到”了标准类型(工具提示超过Console
)。
更新2 我觉得有些不对劲与智能感知我的工作的工作站上,因为它(智能感知)的行为本身很奇怪。当我启动VS并打开.fsx文件时,IntelliSense甚至拒绝解析标准类型/类,并且它不会强调FAKE
类,它什么也不做。但经过一段时间和代码的一些操作IntelliSense开始工作的标准类型,并强调FAKE
类型。
而且,当我创建了类似的代码,我家的工作站上没有出现问题,智能感知的作品,因为它应该。
Ryan Riley的回答绝对正确。我不知道发生了什么,但是'#I'肯定突破智能感知上我的两个工作站上的问题,只要我删除'#I'走 –
同样的事情在这里;在VS 2010高级F#素文字文件,使用引用非系统DLL时智能感知不起作用#我与r组成的相对路径。 –