马上,这不是您的标准“我无法在Visual Studio中工作JavaScript Intellisense”。作为记录:

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

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

  • jquery-vsdoc.js
  • 核心.js
  • 插件1.js
  • 插件2.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,我使用的是 Comment Version 1.3.2b(这就是文件中的内容) http://jqueryjs.googlecode.com/files/jquery-1.3.2-vsdoc2.js. 。我从文件中省略了版本号,这样当文件不可避免地更新时我就不必更改一堆引用。

那么可能是什么问题呢?事实证明,重新启动 Visual Studio 是一种极其不雅(且耗时)的解决方法。

没有正确的解决方案

其他提示

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

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

hkey_current_user software Microsoft VisualStudio 9.0 HTML编辑器 JSFAILSAFETIMEOUT HKEY_CURRENT_USER SOFTWARY SOFTWARE MICROSOFT MICROSOFT VWDEAPTRASS 9.0 9.0 HTML EDITOR

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

打开任务管理器并观察进程。当您按 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 订阅者使用(尽管它是测试版并且仍然存在一些错误)。

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

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

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

'XmlHttpRequest 未定义'就行:

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

看起来 JS 智能感知引擎实际上正在执行一些 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;
    },

现在我的智能感知工作了。

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

安装 SP1 后,您可以禁用 JavaScript 智能感知。
转到工具、选项...

将显示“选项”对话框。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top