2009-05-21 56 views
3

馬上就關閉了,這不是標準的「我無法讓JavaScript IntelliSense在Visual Studio中工作。」備案:Visual Studio 2008 jQuery IntelliSense零星地失敗,重新啓動VS修復程序

  • 我使用Visual Studio 2008
  • 我已經安裝了SP 1
  • 我已經安裝了-vsdoc.js文檔修復文件KB958502

我正在開發一套相互關聯的jQuery插件,將其作爲資源打包到類庫中。因此,一個目錄內,我有(作爲一個例子):

  • 的jquery-vsdoc.js
  • core.js
  • plug1.js
  • plug2.js

在芯.js,我在文件頂部有以下內容:

/// <reference path="jquery-vsdoc.js" /> 

然後在每個插件# .js文件,我有:

/// <reference path="jquery-vsdoc.js" /> 
/// <reference path="core.js" /> 

智能感知的作品最初,在插件工作時,甚至包括從core.js的補充。但是,有時候稍有變化,即使在參考XML標籤中添加和刪除空格,或按下Ctrl-Shift-J,也會導致令人生畏的「錯誤更新JScript智能感知:客戶端腳本智能感知信息未由於錯誤而生成在外部腳本引用中「。除了它剛剛在第二次使用該外部腳本引用外!

對於jQuery的vsdoc.js,我使用評論1.3.2b版(這就是它在文件中說)從http://jqueryjs.googlecode.com/files/jquery-1.3.2-vsdoc2.js。我省略了文件中的版本號,以便在不可避免地更新時不必更改一大堆引用。

那麼會有什麼問題呢?重新啓動Visual Studio被證明是一個可怕的不雅(而且耗時)的解決方法。

回答

0

您是否嘗試過增加智能感知超時?

默認情況下,每個智能感知請求 只允許15秒執行。這 是爲了防止來自 無限循環的智能感知腳本。如果您的 具有較大的腳本或較慢的機器,則可以使用 增加 超時限制。超時值 存儲在以下注冊表項中 (取決於您是否使用 Express或完整產品)。該 值是毫秒所以選擇 東西比15000

HKEY_CURRENT_USER \ SOFTWARE \微軟\ VisualStudio的\ 9.0 \ HTML 編輯\ JsFailsafeTimeout HKEY_CURRENT_USER \ SOFTWARE \微軟\ VWDExpress \ 9更大。0 \ HTML Editor \ JsFailsafeTimeout

+0

好建議!不幸的是(或幸運的是?)我沒有大腳本或慢速機器。失敗是瞬間的,不需要15秒。 – 2009-05-22 16:50:30

0

是否關閉和打開文件重置狀態?

打開任務管理器並觀察過程。當你按下Ctrl-Shift-J時,你看到一個叫做「typelibbuilder.exe」的進程嗎?

我想圖像什麼樣的問題可能需要重新啓動VS.每次按下Ctrl-Shift-J(除非處理已被禁用,在這種情況下您將看到不同的消息),對新引用(該消息所屬的引用)的處理將在新的獨立進程中完成。它幾乎聽起來像VS和typelibbuilder之間的通信或其他一些必要的組件失敗。

在SP1中,您不需要直接引用「-vsdoc」文件。如果您引用「foo.js」並且旁邊有一個「foo-vsdoc.js」文件,那麼VS將使用vsdoc版本來生成智能感知。但我懷疑這與你的問題有關。我知道這並不是很多安慰,但我們已經大大提高了Visual Studio 2010中Javascript Intellisense的性能和可靠性。Beta1目前可用於MSDN訂戶(儘管它是beta版本,但它仍然存在一些錯誤)。

如果你可以得到可靠的repro步驟,你也可以在http://connect.microsoft.com/上提交錯誤報告。

0

我不知道這是否會幫助你,但我已經遇到了在VS 2008 JS智能感知以下錯誤:

當添加的jQuery作爲外部文件的引用,然後我更新JS我得到:

就行了'XMLHttpRequest是未定義:

return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); 

這似乎是JS智能感知引擎實際執行一些jQuery代碼(除可能會檢查它更何況它可以爲您提供一些更多的信息它)。然而,它看起來像window.ActiveXObject對引擎是空的,所以它落入'新的XMLHttpRequest()'塊 - 這也失敗了。

我砍了一個解決方法,打破除IE以外的所有瀏覽器 - 所以不是一個好的解決方案。

xhr: function() 
    { 
     // hack to fix VS 2008 intellisense... note this breaks any browser 
     // except IE 
     var objXhr = { open: function() { }, 
      setRequestHeader: function() { } 
     }; 

     return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : objXhr; 
    }, 

現在我的智能感知的作品:我修復了以下變化。

0

您可能希望在Visual Studio中禁用JavaScript智能感知。

安裝SP1後,您可以禁用JavaScript智能感知。
轉到工具,選項...

「選項」對話框將顯示出來。

導航到左側面面板以下節點:
文本編輯器:: JScript中::一般

禁用以下選項(該組語句完成):
*自動列表成員
*參數信息

+0

這將擺脫錯誤。但是,這並不是錯誤的錯誤。智能感知非常棒,我喜歡它 - 我希望它能夠工作!希望Visual Studio 2010中的改進使這個問題變得毫無意義。 – 2010-04-15 14:19:22