2009-05-21 57 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