马上,这不是你的标准“我无法在Visual Studio中使用javascript IntelliSense。”记录:
我正在开发一套相互关联的jQuery插件,作为资源打包在类库中。所以在一个目录中,我有(作为一个例子):
在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被证明是一种非常不优雅(且耗时)的解决方法。
答案 0 :(得分:0)
您是否尝试过增加IntelliSense超时?
默认情况下,每个IntelliSense请求 只允许15秒执行。这个 是为了防止智能感知 具有无限循环的脚本。如果你 有一个大脚本或较慢的机器, 增加它可能是有意义的 超时限制。超时值 存储在以下注册表项中 (取决于你是否正在使用 快递或完整产品)。该 值以毫秒为单位选择 大于15000的东西。
HKEY_CURRENT_USER \ SOFTWARE \微软\ VisualStudio的\ 9.0 \ HTML 编辑\ JsFailsafeTimeout HKEY_CURRENT_USER \软件\微软\ VWDExpress \ 9.0 \ HTML 编辑\ JsFailsafeTimeout
答案 1 :(得分: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/提交错误报告。
答案 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)
您可能希望在Visual Studio中禁用JavaScript intellisense。
安装SP1后,您可以禁用JavaScript intellisense 转到工具,选项......
将显示“选项”对话框。
导航到左侧面板中的以下节点:
文本编辑器:: JScript :: General
禁用以下选项(在“语句完成”组中):
*自动列表成员
*参数信息