當使用#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組成的相對路徑。 –