如何修复 Visual Studio 2008 的 JQuery 1.6.1 IntelliSense






4.30/5 (7投票s)
本文介绍了如何在 ASP.NET Web 应用程序中修复“Error updating JScript IntelliSense”错误,并恢复对使用 JQuery 1.6.1 的 IntelliSense 的完整支持。

引言
这篇文章是我在使用 Visual Studio 2008 开发 Web 应用程序时,由于使用 JQuery 而经历数小时的沮丧后最终完成的。Visual Studio 2010 具有出色的 JavaScript 支持,但在 Visual Studio 2005 之前,对 JavaScript 的关注度非常低。Visual Studio 2008 已经是一个很大的进步,但 JQuery 库的爆炸式增长以及在几乎任何项目中易于部署,暴露了该平台日益老化的局限性。尽管 Visual Studio 2010 是一个非常好的 IDE,但在某些情况下您只能使用 2008 版本,而本文的目标读者就是这些人。
搜索解决臭名昭著的“Error updating JScript IntelliSense”问题的解决方案,会让您产生一种不好的感觉,即微软似乎不愿意在保证 Visual Studio 2008 对 JQuery 的支持方面投入太多精力。
此外,JQuery 官方网站提供的 JQuery 1.4.1 是随附文档文件的最新版本。论坛上的大多数人会建议您将 IDE 升级到 Visual Studio 2010,或者将 JQuery 降级到 1.4.1,这也是他们保证在 Visual Studio 2008 中经过测试且完全有效的最后一个版本。那么,知道吗?这些都不是可接受的解决方案!从 1.4.1 到 1.6.1 版本之间存在一些更改和错误修复,我希望在我的 Web 应用程序中使用,我将展示如何规避这个问题,并利用 JQuery 1.6.1 和 Visual Studio 2008 IntelliSense 的全部强大功能。
必备组件
- Visual Studio 2008
- Visual Studio 2008 Service Pack 1
- JScript 编辑器支持“-vsdoc.js”IntelliSense 文档文件
- JQuery 1.6.1(撰写本文时是最新版本),带有文档文件
参考页
搜索互联网上的“jquery-1.6.1-vsdoc.js”会将您带到 Microsoft Ajax 内容分发网络页面(http://www.asp.net/ajaxlibrary/cdn.ashx),我们将以此页面作为参考。
在这里,我们可以找到我们所需的一切。如果您还没有这样做(但我怀疑),请尽快安装 Visual Studio 2008 Service Pack 1。这将是我们将要安装的 KB958502 热修复程序的先决条件。
安装 Service Pack 1 可能需要几个小时,所以请耐心等待……完成后,也请安装热修复程序。此补丁增加了 JScript 编辑器对“-vsdoc.js”IntelliSense 文档文件的支持。当您将一个 .js 文件包含到您的项目中时,Visual Studio 2008 会自动检查同一文件夹中是否存在一个同名但以“–vsdoc.js”结尾的文件。此文件包含代码的注释,这些注释格式正确,可用于 IntelliSense 工具提示。现在,我们已准备好设置我们的项目。
设置解决方案
创建一个空白 Web 应用程序。在我们的参考页面中,向下滚动直到找到通过内容分发网络托管第三方文件的部分。在该部分的顶部,您会找到我们所需的所有 JQuery 文件。复制前 3 个路径,并将所有这三个文件下载到您的项目文件夹中。
将文件添加到项目后,您应该处于这种情况
现在,将文件 jquery-1.6.1.js(是的,是完整的那个,而不是压缩的)拖放到 Default.aspx 页面的 head 部分。如果您操作正确,您将看到
<head runat="server">
<title></title>
<script src="Scripts/jquery-1.6.1.js" type="text/javascript"></script>
</head>
几秒钟后……瞧!正是我们想要看到的错误!
毕竟,您可能会认为 –vsdoc.js 文件只是一个文档文件。如果我们没有在网上找到解决方案,我们可以尝试自己解决,只要我们遵守 JavaScript 语法,就可以在其中输入任何内容来帮助解析器读取该文件。只需不要触摸注释!
错误报告了 –vsdoc.js 文件第 1504 行出现了一些问题。所以,让我们打开该文件并转到第 1504 行。我们没有发现任何错误,但在下一行,我们发现了一个未定义赋值,看起来像这样
1505: "triggered": };
所以,让我们修复它,放一个空对象来安抚 JavaScript 解析器
1505 "triggered": {} };
现在保存,然后按 CTRL + SHIFT + J 更新 Jscript IntelliSense。太棒了!错误消失了,但出现了一个类似于第一个的警告
这次,错误在第 2648 行和第 2649 行,所以让我们直接进入 –vsdoc.js 文件并查找一些非常不寻常的地方
2549 "checkClone": ,
那里还有另一个未定义赋值。虽然现代浏览器的 JavaScript 引擎可以处理这种赋值并容忍它,但旨在提供代码帮助的解析器可能不太喜欢它,所以让我们也来修复这个
2549 "checkClone": true,
再次保存,然后再次按 CTRL + SHIFT + J 更新 Jscript IntelliSense。如果今天您运气好(并且您正确地交叉了手指),您将在 Visual Studio 状态栏中看到“Ready”,并且错误窗格中不再有错误。现在,删除我们添加到 Default.aspx 页面中的 jquery1.6.1.js 的引用,并用对 JQuery 的压缩版本引用替换它,这无疑是我们最终希望部署的版本。现在,您的页面在 head
部分应该看起来像这样
<head runat="server">
<title></title>
<script src="Scripts/jquery-1.6.1.min.js" type="text/javascript"></script>
</head>
现在,让我们向项目中添加一个新的 JavaScript 文件,并在文件的最顶部添加一个对我们的 –vsdoc.js 文档文件的注释引用,如下所示
/// <reference path="jquery-1.6.1-vsdoc.js" />
让我们尝试在 JavaScript 文件中键入 $
,然后……
哇,IntelliSense 正在工作……看起来很有希望!尝试输入更多内容,看看文档是否也已加载
观察 Visual Studio 2008 现在如何能够为 JQuery 1.6.1 提供完整的 IntelliSense 和方法文档支持!
考虑因素
我唯一没有答案的问题是,为什么微软会为 JQuery 1.6.1 发布一个有错误的文档文件。