1

在我的一个解决方案中,我有一个类库项目和两个Web应用程序。在Web应用程序的.cshtml页面上,我使用了Razor智能感知,但对Javascript完全没有帮助。如果我输入“$”。并按Ctrl +空格,什么也没有发生。没有弹出窗口。这非常令人沮丧,因为我不是那么熟悉JS!但是,在一个与web应用程序不同的解决方案,我有JavaScript智能感知。这使我认为它不是Visual Studio已经坏了。这是关于这个特定的解决方案。这使得这个问题在其他类似的StackOverflow问题中是唯一的。在特定的Web应用程序中没有javascript intellisense(VS2015)

我已经尝试了所有可以在StackOverflow上找到的答案。特别是大家最喜欢的,将/Scripts/_reference.js文件添加到Tools |选项|代码编辑器| Javascript |智能感知设置。这没有帮助。我曾试着将jQuery从3.1.1降级到2.x,与解决方案中使用的版本相同。我已经尝试编辑_reference.js文件以减少项目数量。我禁用了Resharper。我卸载并重新加载了该项目。我已经重新启动VS.我没有重置VS的设置,因为这太混乱了,因为它在其他项目中工作,我不想。

我需要的是了解Visual Studio如何确定如何显示智能感知的人,以便为我提供需要适当工作的清单。这里的关键线索是为什么一个解决方案可以正常工作,但另一个解决方案却不行什么样的项目级别设置可能会影响到这一点?

这里是我的/Scripts/_references.js文件:

/// <autosync enabled="false" /> 
/// <reference path="jquery-3.1.1.js" /> 
/// <reference path="jquery-3.1.1.intellisense.js" /> 
/// <reference path="jquery-ui-1.11.4.js" /> 
/// <reference path="bloodhound.js" /> 
/// <reference path="bootstrap.js" /> 
/// <reference path="jquery.countdown.js" /> 
/// <reference path="jquery.unobtrusive-ajax.js" /> 
/// <reference path="jquery.validate.js" /> 
/// <reference path="jquery.validate.unobtrusive.js" /> 
/// <reference path="jquery-ui-timepicker-addon.js" /> 
/// <reference path="modernizr-2.8.3.js" /> 
/// <reference path="respond.js" /> 
/// <reference path="typeahead.bundle.js" /> 
/// <reference path="typeahead.jquery.js" /> 
/// <reference path="typeahead.mvc.model.js" /> 
+1

您是否尝试添加新的.cshtml页面?这两个Web应用程序项目都有一个新的.cshtml文件的问题?备份此解决方案,然后逐个删除类库项目和Web应用程序,以检查其他项目是否会影响此问题。删除解决方案文件夹下的.suo或.vs文件,.vs文件夹可能被隐藏,重新启动VS并重新打开此解决方案以再次检查此问题。同样,我发现在你的_references.js文件中,'autosync'是'false',默认值是'true',你也可以修改它并清理解决方案,重建它并测试。 –

+1

同时,您可以右键点击.cshtml文件,选择“打开方式...”,它应该是“HTML编辑器(默认)”。尝试打开管理CMD窗口并导航到C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE并运行命令:devenv/resetuserdata来清理旧用户数据。或删除或重命名文件夹:C:\ Users \ <您的用户名> \ AppData \ Local \ Microsoft \ VisualStudio \ 14.0和C:\ Users \ <您的用户名> \ AppData \ Roaming \ Microsoft \ VisualStudio \ 14.0进行故障排除这个问题。 –

回答

2

@萨拉 - MSFT帮我解决这个在Visual Studio论坛,我会在这里重新发布的信息来帮助别人。首先,她给了我一些很好的步骤来尝试:

请参阅您的描述,此问题只发生在此解决方案。 我们需要检查这个问题是否存在于这个解决方案中的所有.cshtml文件当中,请看下面的问题 troublebleshot :(备份解决方案之前做任何修改,以防我们 需要回滚。 )

  1. 添加一个新的.cshtml文件在同一网页或其它网页的项目下进行测试的智能感知

  2. 添加一个新的Web应用程序,那么这个新的网站下添加一个新的.cshtml文件申请和检查

  3. 逐一移除类库项目和Web应用程序项目之一检查其他项目影响到这个问题

同时,你可以试试下面的方法通常用于 智能感知工作,不工作的问题:

  1. 删除或名为.suo文件.VS您的解决方案文件夹下的文件夹.VS可能被隐藏,重新启动VS并重新打开该解决方案,再次检查 这个问题。

  2. 在你的_references中。js文件,'autosync'为'false',默认值为'true',你也可以修改它并清理解决方案, 重建它,然后再次测试intellisense

  3. 右键点击.cshtml文件选择“用...打开”,它应该是“HTML编辑器(默认)”。

  4. 尝试打开管理CMD窗口并导航到C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE并运行 命令:devenv/resetuserdata来清理旧用户数据。 5. 删除或重命名文件夹:C:\ Users \\ AppData \ Local \ Microsoft \ VisualStudio \ 14.0和C:\ Users \\ AppData \ Roaming \ Microsoft \ VisualStudio \ 14.0以清理 缓存数据。

我取得过成功,在步骤2中

2.添加一个新的Web应用程序,然后添加在这个新的Web应用程序中新的.cshtml文件,并检查

我认为这意味着在破解的解决方案中添加一个新的应用程序,所以我这样做了。 JS Intellisense在这个新项目中工作!这是一个很好的尝试。它始于JQuery 1.x,我升级到3.1.1以匹配其他项目。这削弱了智能感知的质量,只给出最少量的信息。我在_references.js中查看并注意到只有jquery.min。*和jquery.slim。*文件存在。我删除了这些引用,并将其更改为jquery-3.1.1.js文件。所以,我的〜/脚本/ _references.js看起来是这样的:

/// <autosync enabled="true" /> 
/// <reference path="jquery-3.1.1.js" /> 
/// <reference path="bootstrap.js" /> 
/// <reference path="jquery.validate.js" /> 
/// <reference path="jquery.validate.unobtrusive.js" /> 
/// <reference path="modernizr-2.6.2.js" /> 
/// <reference path="respond.js" /> 

这大大提高了JS智能感知的质量,因为它不使用精缩版,它是从jQuery-3.1.1阅读。 intellisense.js文件。

但是!我的其他项目呢?我复制了上面的_references.js代码,并将其粘贴到破损项目中的_references.js中。有用!好极了!但为什么?

我开始从破损的_references.js文件中删除单独的行。找到罪魁祸首并不需要很长的时间。

/// <reference path="jquery-ui-1.11.4.js" /> 

此引用打破了我所有的javascript intellisense。删除它解决了我的问题。谢谢Sara帮助你排除故障!

更新:我应该补充说,违规参考不是唯一一个会打破智能感知的。我也找到了其他人,尤其是KendoUI。所以,如果你有这个问题,开始删除_references.js中的引用,直到javascript再次工作。

+0

嗨redwards,你可以标记你的答案,当你有空闲时间的答案,它只是一个提醒:) –

相关问题