AngularJS intellisense不适用于Visual Studio 2015
根据这篇文章, intellisense也应该在新的VS 2015上工作,但到目前为止,我只能得到angular度对象的智能感知,而不是依赖或我的自定义模块。
以下是我所做的:
- 将angular.intellisense.js添加到
C:\Program Files (x86)\Microsoft Visual Studio 14.0\JavaScript\References
的全局JavaScript引用 - 重新启动VS2015然后什么也没有,只是当我试图在$ http对象上使用intellisense时,它只是显示感叹号。
我也将文件添加到我的angular.js相同的地方,但它仍然无法正常工作。 我在这种情况下的问题是,我应该在哪里放置文件? 在只有我的angular.jsangular度的公共文件夹,或在我的开发angular度文件夹所有从鲍尔下载的文件。
我也尝试过将它直接添加到Implicit(Web)引用组的工具/选项/文本编辑器/ javascriptr / intellisense / reference菜单中,但它仍然不起作用。
在我的项目中,我在src文件夹中有以下文件夹结构:
- wwwroot文件
- 应用程序(我angular网站的东西)
- 控制器
- 服务
- 意见
- lib(js依赖关系,只有每个库的.min.js文件)
- angular
- angularpath
- ….
- _references.js(visual studio js引用文件,包含对应用程序和lib文件夹内的文件的引用)
- 应用程序(我angular网站的东西)
- 图书馆(包含由凉亭下载的完整图书馆)
- angular
- angularpath
- …
作为一个方面说明,我没有一个/脚本文件夹,因此没有/scripts/_references.js
文件
。
这在Visual Studio 2015 RTM中并不适用于Web项目,但是我解决了这个问题。
该项目不是用Visual Studio创build的,也没有任何地方有一个_references.js
文件。 所以我认为这会在任何情况下都有效。
我从VS用户界面中删除了所有其他intellisense资源,以确保我所做的是修复它。
- 复制未压缩的CDNurl。 今天恰好是https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.js
- 在Visual Studio 2015 RTM中,转到
Tools, Options, Text Editor, Javascript, Intellisense, References
。 select适当的参考组; 对于大多数Web项目这是Implicit (Web)
。 将url粘贴到底部文本框,然后点击添加button。 不要closures对话框。 - 在“
Text Editor, Javascript, Intellisense, General
,确保选中“Download remote references
”checkbox。 - 点击确定button。
- (可选)如果您希望为您创build的angular提供程序(不是angular框架的一部分)提供智能感知,请将
_references.js
添加到项目的根目录。 不要打扰做一个Scripts
文件夹。 右键点击它并select自动同步,然后select更新。 进入它并删除由生成过程创build的任何js文件。 如果你不这样做,他们可以如此之大,他们将打破智力感知。 第一次使用智能感知时,要做好5-10秒的准备,因为它必须从您的项目中加载所有这些参考。 - 如果干扰本机智能感知,则可能需要在Resharper中禁用智能感知。
- 重新启动Visual Studio 。 直到你这样做,它才会起作用。 另外,我关于closures除此之外的所有其他实例的偏执狂,所以这些设置“坚持”。 所以我build议你在重启这个实例之前做这个。
正如@Balthasar指出的(如果您使用的是Resharper),您将需要从Visual Studio中启用intellisense才能正常工作:
resharper – > options – > environment – > intellisense – > general,select'Custom Intellisense',对于Javascript你可以selectVisual studio。 或者,您可以使用“Visual Studio”语句完成(第二个选项)
我刚刚意识到_reference.js文件使用的自动顺序(首先是我的文件,然后是框架的文件)阻止intellinsense在其他不是app.js文件的文件上工作
这是现在我的_references.js看起来像:
/// <autosync enabled="false" /> /// <reference path="angular.js" /> /// <reference path="angular-resource.js" /> /// <reference path="angular-ui-router.min.js" /> /// <reference path="jquery-2.1.4.js" /> /// <reference path="materialize/materialize.js" /> /// <reference path="../App/App.js" /> /// <reference path="../App/Controllers/productsController.js" /> /// <reference path="../App/Controllers/productsEditController.js" /> /// <reference path="../App/Controllers/valuesController.js" /> /// <reference path="../common/common.services.js" /> /// <reference path="../common/productsResource.js" /> /// <reference path="../common/valuesResource.js" />
我有一个类似的问题,事实certificate,Resharper阻止了我在_references.js文件中设置的所有好的JavaScript intellisense。
Visual Studio intellisense for AngularJS是非常感性的(一种很好的方式说,它很可能发展不佳)。
所以,即使所有东西都configuration好了_references.js文件,并且为其他类库(如jQUERY)获得了intellisense,那么对于AngularJS,您可能也不会得到它。
例如,在VS 2015社区中,下面的指令不会显示$ httpangular度对象的intellisense,尽pipe一切正常的代码:
在下面的图片中,我向模块添加了一个空的数组(这意味着模块将被创build,如果另一个具有相同的名称,它将被覆盖),智能感知开始工作:
这里是你testing自己的代码片段(尝试在这里添加空数组):
(function () { 'use strict'; angular .module('intellisence.sucks.directives') .directive('footer', footer); footer.$inject = ['$http']; function footer($http) { $http. var directive = { link: link, restrict: 'EA' }; return directive; function link(scope, element, attrs) { } } })();
我遇到过同样的问题。 当我添加angular度,VS 2015(RTM)修改我的_references.js; 基本上它删除了文件中的一些行。 当我在下面的_references.js中添加一个angula的参考
/// <reference path="lib/angular/angular.js" />
我在VS 2015中获得了我的Intellisense for Angular 1.4.3!
按照这篇文章来添加更全面的智能感知VS.
http://blogs.msdn.com/b/visualstudio/archive/2015/02/05/using-angularjs-in-visual-studio-2013.aspx
下载angular.intellisense.js文件并将其放在Program Files(x86)\ Microsoft Visual Studio 12.0 \ JavaScript \ References文件夹中
我有这个问题。
Visual Studio IDE将扫描HTML文件中引用的任何js文件,并在必要时使用它们(例如intellisense等)。
我的问题是我引用Angularjs使用CDN / http://地址,因此Visual Studio没有任何关于angular度的信息。
尝试直接下载angularjs js文件,并将其包含在您的项目和参考index.html,重build(以防万一),再次尝试,希望它应该工作。
希望我帮助。
我有这个RTM的问题..从angular对象和hello世界复杂度senario($ http和所有自定义对象不工作)的apapart ..遵循_reference设置。 我唯一的疑问是我从RC升级到RTM(没有全新安装)在Git上创build了一个问题[link] github.com/jmbledsoe/angularjs-visualstudio-intellisense/issues/… ..抓住VHD Win 10的形象,并去尝试一旦d / l完成:( –
UPDATE
好的,这里有一些帮助是答案…. Intellisense引擎永远不会看到名为“sportsStore”的模块被创build,因为它是在脚本块的app.html文件中创build的:
<script> angular.module("sportsStore", ["customFilters","cart"]); </script>
VS Intellisense引擎正在“执行”您项目中的代码,以便发现如何完成代码。 它使用_references.js文件作为起点,并按顺序执行该文件中的每个引用。 由于VS Intellisense从不执行创build名为“sportsStore”的AngularJS模块的代码行,因此它不知道如何完成代码。
将上面的JavaScript代码移动到它自己的JS文件(我们称之为“app.js”),并在_references.js中包含对它的引用。 确保“app.js”引用紧跟在“angular.js”引用之后,因为您需要在其他脚本文件configuration之前创build该模块。 :d
只需在项目的根目录下的一个名为“脚本”(命名约定)的文件夹中创build一个_references.js文件。 用必要的JavaScript文件更新它,你应该能够获得智能感知。 这里有一个关于为什么需要这样的事情的链接: http : //madskristensen.net/post/the-story-behind-_referencesjs