Javascript Visual Studio 2008 jQuery IntelliSense偶尔失败,重新启动VS修复程序

Javascript Visual Studio 2008 jQuery IntelliSense偶尔失败,重新启动VS修复程序,javascript,visual-studio,intellisense,Javascript,Visual Studio,Intellisense,一开始,这并不是您的标准“我无法让javascript IntelliSense在Visual Studio中工作。”作为记录: 我正在使用VisualStudio2008 我已经安装了SP 1 我已经安装了-vsdoc.js文档文件的修补程序 我正在开发一套相互关联的jQuery插件,将其打包为类库中的资源。因此,在目录中,我有(作为示例): jquery-vsdoc.js core.js plug1.js plug2.js 在core.js中,我在文件顶部有以下内容: /// <

一开始,这并不是您的标准“我无法让javascript IntelliSense在Visual Studio中工作。”作为记录:

  • 我正在使用VisualStudio2008
  • 我已经安装了SP 1
  • 我已经安装了-vsdoc.js文档文件的修补程序
我正在开发一套相互关联的jQuery插件,将其打包为类库中的资源。因此,在目录中,我有(作为示例):

  • jquery-vsdoc.js
  • core.js
  • plug1.js
  • plug2.js
在core.js中,我在文件顶部有以下内容:

/// <reference path="jquery-vsdoc.js" />
//
然后在每个plug#.js中,我有:

/// <reference path="jquery-vsdoc.js" />
/// <reference path="core.js" />
//
/// 
IntelliSense最初可以工作,甚至包括在插件中工作时从core.js添加的内容。但是,有时,即使是最轻微的更改,甚至在引用XML标记中添加和删除空格,或按Ctrl-Shift-J,都会导致可怕的“错误更新JScript IntelliSense:由于外部脚本引用中的错误,客户端脚本IntelliSense信息未生成”只不过一秒钟前它还在使用外部脚本引用

对于jquery-vsdoc.js,我使用的是来自的注释版本1.3.2b(文件中就是这么说的)。我从文件中省略了版本号,这样在不可避免地更新时就不必更改大量引用


那么问题出在哪里呢?重新启动Visual Studio被证明是一个非常不雅观(而且非常耗时)的解决方法。

您是否尝试过增加IntelliSense超时

默认情况下,每个IntelliSense请求 只允许执行15秒。这 是为了阻止IntelliSense 具有无限循环的脚本。如果你 拥有大型脚本或较慢的计算机, 增加成本可能是有道理的 超时限制。超时值 存储在以下注册表项中 (取决于您是否正在使用 快递或完整产品)。这个 值以毫秒为单位,因此选择 超过15000的东西

HKEY\U当前\U用户\Software\Microsoft\VisualStudio\9.0\HTML 编辑器\JsFailsafeTimeout HKEY\U当前用户\软件\ Microsoft\VWDExpress\9.0\HTML 编辑器\JsFailsafeTimeout


关闭和打开文件是否会重置状态

打开任务管理器并观察流程。当您按下Ctrl-Shift-J时,是否看到一个名为“typelibbuilder.exe”的进程开始运行

我试图想象什么样的问题可能需要重新启动VS。每次按下Ctrl-Shift-J时,引用(该消息所涉及的)的处理都在一个新的单独的过程中完成(除非已禁用处理,在这种情况下,您将看到不同的消息)。听起来似乎VS和typelibbuilder或其他必要组件之间的通信失败了

在SP1中,您不需要直接引用“-vsdoc”文件。如果您引用“foo.js”,并且旁边有一个“foo vsdoc.js”文件,那么VS将使用vsdoc版本生成intellisense。不过,我怀疑这与你的问题有关

我知道这并不是什么安慰,但我们已经在VisualStudio2010中大幅提高了Javascript Intellisense的性能和可靠性。Beta1目前可供MSDN订阅者使用(尽管它是beta版,但仍有一些bug)


如果您可以获得可靠的复制步骤,您还可以在提交错误报告。

我不知道这是否对您有帮助,但我在VS 2008 JS intellisense中遇到了以下错误:

在外部文件中添加jQuery作为引用,然后更新JS时,我得到:

行中的“XmlHttpRequest未定义”:

return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
看起来JS intellisense引擎实际上正在执行一些jQuery代码(很可能会对其进行检查,以便提供有关它的更多信息)。但是,对于引擎来说,window.ActiveXObject似乎为null,因此它属于“new 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;
    },

现在我的intellisense可以工作了。

您可能需要在Visual Studio中禁用JavaScript intellisense

安装SP1后,您可以禁用JavaScript intellisense。
转到工具、选项

将显示“选项”对话框

导航到左侧面板中的以下节点:
文本编辑器::JScript::常规

禁用以下选项(在组语句完成中):
*自动列出成员

*参数信息

好建议!不幸的是(或幸运的是?)我没有大型脚本或速度较慢的机器。故障是瞬间发生的,不需要15秒。这将消除错误。然而,困扰我的不是错误。IntelliSense很棒,我喜欢它——我希望它能工作!希望VisualStudio2010的改进使这个问题变得毫无意义。