jQuery UI破坏了Visual Studio 2015的智能感知

5

我在使用JavaScript Intellisense时遇到了一个令人沮丧的问题,如果我在_references.js文件中包含jQuery UI,那么我将失去所有的JavaScript Intellisense。有没有人知道如何解决这个问题,而不是从_references.js中删除jQuery UI?

更新

  • 我知道在_references.js文件中添加的文件越多,它会变得更慢,这很合理。然而,在工作中,我的项目包括更多文件(大约600个),没有类型感知问题,而我的项目只有20个。因此,这不是“文件太多”的问题。
  • 我将项目从Git拉到另一台电脑上(因此VS15安装是独立的),尝试包含jQuery UI文件,这仍然导致我的项目失去intellisense。
    • 它不能是安装问题,因为其他工作项目包括jQuery UI,没有intellisense问题
  • 我确实意识到我可以手动管理_references.js来完成任务,但我希望彻底解决它,因为我讨厌需要两次添加信息(创建JS文件,然后更新_refernces.js)。

有了这些新信息,我认为这必须是我的项目设置中的某种更深层次的问题,导致了这个问题,而不是基于安装或jQuery UI的特定问题。有人有任何想法,关于.sln.csproj文件中的哪些设置可能会导致JS Intellisense问题吗?

6个回答

5

对于那些遇到这个问题的人,我发现使用jQuery 3.x版本时,如果在_references.js中引入了jQuery UI,智能感知会出现故障。我的解决方法是使用NuGet将版本改回2.2.4,然后一切都恢复正常了。


1
我有同样的问题。我尝试了很多方法,但唯一能够始终正常工作的是禁用自动同步功能并删除jquery UI引用。随着越来越多的库,智能感知也会变得越来越慢,甚至到了看起来像不工作的地步。最后,我只包括自己的脚本和jquery以获取有关语法的有用提示。不幸的是,这意味着我必须手动更新_references.js文件,但这肯定比完全不工作要好。
您还可以在_references文件中限制全局引用,并将您想要进行智能感知的脚本文件拖动到每个视图中,如果您像我一样每个视图都有一个脚本文件。这样,您就不会为未呈现到视图的脚本获得智能感知。

我在原来的问题中添加了一个更新,以回应您的建议。 - willwolfram18
是的,听起来你和我处于同样的境地,不幸的是,我从未能够在我的引用中包含jQuery UI并保持智能感知。我到处搜索,但始终找不到解决方法 :( - Mike
刚看到你在其他答案中的评论,糟糕。我想我曾经降级到之前的版本并使其工作,但我已经忘记了。不过,我不愿意为智能感知做这件事。它似乎还有其他库也出现了同样的问题,不仅仅是jquery UI。它看起来非常脆弱。 - Mike

0

不确定这是否能帮到您,但您是否已将以下代码添加到您的 .js 文件顶部?

/// <reference path="/scripts/jquery-3.1.1.js" />

如果您使用 NuGet 安装了解决方案中的 jquery,则会生成该路径。如果您将 jquery 文件和智能感知文件放在其他位置,请改用该路径(我相信它们需要在同一个文件夹中)。


我在原来的问题中添加了一个更新,以回应您的建议。 - willwolfram18
好的,只是澄清一下,你正在使用 VS2015 进行工作,对吧? 我刚用 jQuery 和 jQuery UI 创建了一个项目。两者都可以正常工作,并且 jQuery 的智能感知存在(可能找不到 jQuery UI 的智能感知)。无论如何,请确保您执行以下三个步骤:1)右键单击解决方案,单击 NuGet 管理器。搜索 jQuery 然后安装它。这样做相同于 jQuery UI. 2) 添加 jQuery 和 jQuery UI 的 src 引用。 3) 使用我在上面的答案中提出的方法告诉 MVS 使用智能感知。你是否也百分之百确定你已经正确设置了 jQuery 智能感知? - Capn Jack
相信我,我已经三次检查了jQuery本身是否被包含在内,它是否指向正确的目录/文件等。但现在我只是生气,结果发现问题是由于使用jQuery 3.x引起的。一旦我改用jQuery 2.2.4,所有智能感知都是功能性的,无论jQuery UI是否存在。 - willwolfram18
哈哈,奇怪,我用的是3.1.1版本,而且它正常运行。至少你设法让它工作了。 - Capn Jack

0

enter image description here

始终先安装jQuery,可以选择任何版本,然后再安装JQuery-ui。如果您想升级或降级JQuery的版本,则每次更改都必须卸载并重新安装JQuery-ui。首先是Jquery-3.6.0.js,然后是Jquery-ui-1.12.1.js,每次在jquery中进行更改时都必须重新安装jquery-ui。


0

我找到了一个更好的解决方案!只需要将jquery-ui-1.12.1.js(或类似文件)重命名为_jquery-ui-1.12.1.js即可。这将使它出现在引起Intellisense不工作的_references.js文件中与jQuery 3冲突的引用之前。确保还更新任何包含新下划线字符前缀的脚本标记或BundleConfig.cs引用!


0

解决方案:

在您的_references.js文件中:

  1. 将JQuery-UI引用上移到主要的JQuery引用之前
  2. 禁用自动同步

例如:

/// <autosync enabled="false" />
/// <reference path="jquery-ui-1.12.1.js" />
/// <reference path="jquery-3.3.1.js" />

缺点:

  • 每次更新JavaScript引用(右键单击_references.js以在Visual Studio中更新引用),您都必须重复步骤1。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接