繁体   English   中英

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

[英]Visual Studio 2008 jQuery IntelliSense sporadically fails, restarting VS fixes

马上,这不是你的标准“我无法在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被证明是一种非常不优雅(且耗时)的解决方法。

我不知道这是否会对你有帮助,但我在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工作。

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

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

将显示“选项”对话框。

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

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

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

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

HKEY_CURRENT_USER \\ Software \\ Microsoft \\ VisualStudio \\ 9.0 \\ HTML Editor \\ JsFailsafeTimeout HKEY_CURRENT_USER \\ Software \\ Microsoft \\ VWDExpress \\ 9.0 \\ HTML Editor \\ JsFailsafeTimeout

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

打开任务管理器并观察进程。 当您按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的性能和可靠性。目前Beta2可供MSDN订阅者使用(虽然它是beta版,但仍有一些漏洞)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM