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

时间:2009-05-21 21:29:11

标签: javascript visual-studio intellisense

马上,这不是你的标准“我无法在Visual Studio中使用javascript IntelliSense。”记录:

  • 我正在使用Visual Studio 2008
  • 我已经安装了SP 1
  • 我已经为-vsdoc.js文档文件KB958502
  • 安装了修补程序

我正在开发一套相互关联的jQuery插件,作为资源打包在类库中。所以在一个目录中,我有(作为一个例子):

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

在core.js中,我在文件顶部有以下内容:

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

然后在每个插件#.js中,我有:

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

IntelliSense最初工作,甚至包括在插件中工作时core.js的添加。但是,有时最轻微的更改,甚至添加和删除参考XML标记中的空格,或按Ctrl-Shift-J,都会导致可怕的“更新JScript IntelliSense时出错:客户端脚本IntelliSense信息由于错误而未生成在外部脚本参考中。“除了它在一秒钟前使用该外部脚本参考!

对于jquery-vsdoc.js,我正在使用来自http://jqueryjs.googlecode.com/files/jquery-1.3.2-vsdoc2.js的评论版本1.3.2b(这就是文件中所说的内容)。我省略了文件中的版本号,这样我就不必在更新时更改一堆引用。

那么可能是什么问题?重新启动Visual Studio被证明是一种非常不优雅(且耗时)的解决方法。

4 个答案:

答案 0 :(得分:0)

关闭并打开文件会重置状态吗?

打开任务管理器并观察进程。当您按Ctrl-Shift-J?

时,是否看到一个名为“typelibbuilder.exe”的进程启动

我正在尝试映像可能需要重新启动VS的问题。每次按Ctrl-Shift-J时,都会在一个新的独立进程中处理引用(该消息所属的引用)(除非已禁用处理,在这种情况下您将看到不同的消息)。听起来好像VS和typelibbuilder之间的通信或其他一些必要的组件都失败了。

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

我知道这并不是什么安慰,但是我们已经大大提高了Visual Studio 2010中Javascript Intellisense的性能和可靠性。目前Beta3可供MSDN订阅者使用(虽然它是测试版,但仍有一些错误)

如果您可以获得可靠的重复步骤,您还可以在http://connect.microsoft.com/提交错误报告。

答案 1 :(得分:0)

您可能希望在Visual Studio中禁用JavaScript intellisense。

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

将显示“选项”对话框。

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

禁用以下选项(在“语句完成”组中):
*自动列表成员
*参数信息

答案 2 :(得分:0)

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

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

在行上

'XmlHttpRequest未定义':

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

似乎JS intellisense引擎实际上正在执行一些jQuery代码(更有可能检查它以便它可以提供更多关于它的信息)。但是它看起来像window.ActiveXObject对于引擎是空的,因此它属于'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工作了。

答案 3 :(得分:0)

您是否尝试过增加IntelliSense超时?

  

默认情况下,每个IntelliSense请求   只允许15秒执行。这个   是为了防止智能感知   具有无限循环的脚本。如果你   有一个大脚本或较慢的机器,   增加它可能是有意义的   超时限制。超时值   存储在以下注册表项中   (取决于你是否正在使用   快递或完整产品)。该   值以毫秒为单位选择   大于15000的东西。

     

HKEY_CURRENT_USER \ SOFTWARE \微软\ VisualStudio的\ 9.0 \ HTML   编辑\ JsFailsafeTimeout   HKEY_CURRENT_USER \软件\微软\ VWDExpress \ 9.0 \ HTML   编辑\ JsFailsafeTimeout