AngularJS 智能感知无法在 Visual Studio 2015 上运行
AngularJS intellisense not working on Visual Studio 2015
根据这个 post intellisense 也应该在新的 VS 2015 上工作,但到目前为止我只得到 angular 对象的 intellisense 而不是依赖项或我的自定义模块。
这是我所做的:
- 将 angular.intellisense.js 添加到全局 javascript 引用
C:\Program Files (x86)\Microsoft Visual Studio 14.0\JavaScript\References
- 重启VS2015
然后什么也没有,每当我尝试在 $http 对象上使用智能感知时,它只会显示感叹号。
我也将文件添加到 angular.js 所在的位置,但仍然无法正常工作。在这种情况下,我的问题是,我应该把文件放在哪里?在只有我的 angular.js 的 angular public 文件夹中,或者在我的开发 angular 文件夹中,其中包含从 bower 下载的所有文件。
我也尝试将它直接添加到 tools/options/text editor/javascriptr/intellisense/reference 菜单中,在隐式(Web)参考组中,但它仍然没有用。
在我的项目中,src 文件夹中有以下文件夹结构:
- wwwroot
- app(我的 angular 网站内容)
- 控制器
- 服务
- 观看次数
- lib(js依赖,只有各个库的.min.js文件)
- angular
- angular-路线
- .....
- _references.js(visual studio js 引用文件,包含对 app 和 lib 文件夹中文件的引用)
- 库(包含 bower 下载的完整库)
- angular
- angular-路线
- ...
附带说明一下,我没有 /scripts 文件夹,因此没有 /scripts/_references.js
文件
.
按照本文为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 文件,并在必要时使用它们(用于智能感知等)。
我的问题是我使用 CDN/http:// 地址引用 Angularjs,因此 Visual studio 没有关于 angular.[=10= 的任何信息]
尝试直接下载 angularjs js 文件并将其包含在您的项目中并在您的 index.html 中引用,重建(以防万一)并重试,希望它能正常工作。
希望我有所帮助。
我有这个 RTM 问题 ..除了 angular 对象和 hello world 复杂性 senario($http 和所有自定义对象不工作)..遵循 _references 设置。我唯一的怀疑是我从 RC 升级到 RTM(没有全新安装)在 Git [link]github.com/jmbledsoe/angularjs-visualstudio-intellisense/issues/… ..Grabbing a VHD 上造成了问题赢得 10 张图像并在 d/l 完成后尝试 :( –
更新
好的,这里有一点帮助就是答案....智能感知引擎永远不会看到正在创建名为 "sportsStore" 的模块,因为它是在脚本的 app.html 文件中创建的区块:
<script>
angular.module("sportsStore", ["customFilters","cart"]);
</script>
VS Intellisense 引擎是 "executing" 您项目中的代码,以便发现如何完成代码。它使用 _references.js 文件作为起点,并按顺序执行该文件中的每个引用。由于 VS Intellisense 从不执行创建名为 "sportsStore" 的 AngularJS 模块的代码行,因此它不知道如何完成代码。
将上面的 JavaScript 代码移动到它自己的 JS 文件中(我们称它为 "app.js")并在 _references.js 中包含对它的引用。确保 "app.js" 引用紧跟在 "angular.js" 引用之后,因为您需要它在其他脚本文件配置它之前创建模块。 :D
我遇到了类似的问题,结果发现 Resharper 阻止了我在 _references.js 文件中设置的所有 JavaScript 智能感知。
我遇到了同样的问题。当我添加 angular 时,VS 2015 (RTM) 修改了我的 _references.js;基本上它删除了我在文件中的一些行。当我在 _references.js 中添加 angula 的参考时,如下所示
/// <reference path="lib/angular/angular.js" />
我在 VS 2015 中获得了 Angular 1.4.3 的智能感知!
这在 Visual Studio 2015 RTM 网络项目中对我不起作用,但我解决了问题。
此项目不是使用 Visual Studio 创建的,并且在任何地方都没有 _references.js
文件。所以我认为这在任何情况下都有效。
我从 VS UI 中删除了所有其他智能感知资源,以确保我所做的是修复它的方法。
- 转到 https://www.angularjs.org 并拉出下载对话框。
- 复制未压缩的 CDN url。今天恰好是 https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.js
- 在 Visual Studio 2015 RTM 中,转到
Tools, Options, Text Editor, Javascript, Intellisense, References
。选择合适的参考组;对于大多数 Web 项目,这是 Implicit (Web)
。将 url 粘贴到底部文本框,然后单击 添加 按钮。不要关闭对话框。
- 在
Text Editor, Javascript, Intellisense, General
下,确保选中 Download remote references
的复选框。
- 单击确定按钮。
- (可选)如果您希望为您创建的 angular 提供程序(不是 angular 框架的一部分)提供智能感知,请将
_references.js
添加到项目的根目录。不要费心制作 Scripts
文件夹。右键单击它并选择 auto-sync,然后选择更新。进入它并删除由构建过程创建的所有 js 文件。如果不这样做,它们可能会很大,以至于会破坏智能感知。第一次使用 intellisense 时请准备好大约 5-10 秒的延迟,因为它必须从您的项目中加载所有这些引用。
- 如果 javascript Resharper 会干扰本机智能感知,您可能需要在 Resharper 中禁用智能感知。
- 重新启动 Visual Studio。在您执行此操作之前,它不会起作用。另外,我偏执于先关闭除此实例之外的所有其他实例,因此这些设置 "stick"。所以我建议你在重启这个实例之前这样做。
只需在项目根目录下名为 'Scripts'(命名约定)的文件夹中创建一个 _references.js 文件。使用必要的 javascript 文件更新它,您应该能够获得智能感知。 link 为什么需要这样的东西:http://madskristensen.net/post/the-story-behind-_referencesjs
我刚刚意识到 _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" />
正如@Balthasar 指出的(如果您使用的是 Resharper),您需要从 Visual Studio 启用智能感知才能工作:
Resharper -> 选项 -> 环境 -> 智能感知 -> 常规,select 'Custom Intellisense' 对于 Javascript 你可以 select Visual studio。或者,您可以使用 'Visual Studio' 语句完成(第二个选项)
Visual Studio AngularJS 的 intellisense 非常多愁善感(这是一种很可能开发不善的好说法)。
因此,即使使用 _references.js 文件配置好所有内容,并且您获得了 jQUERY 等其他库的智能感知,您很可能不会获得 AngularJS 的智能感知。
例如,在 VS 2015 社区中,以下指令不会显示 $http angular 对象的智能感知,尽管代码一切正常:
在下图中,我向模块添加了一个空数组(这意味着模块将被创建,如果存在另一个同名的模块,它将被覆盖),智能感知开始工作:
这是一段代码供您自己测试(尝试在此处添加空数组):
(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) {
}
}
})();
PS:如果您在解决方案资源管理器中单击项目中的任何文件夹并按 Ctrl
+Alt
+A
添加新项目,您获得添加 AngularJs 指令的建议,如果你这样做,该指令将像我刚刚向你展示的那样,模块声明中没有空数组,因此智能将无法使用它。它不适用于 Microsoft 提供给用户的示例...仅适用于模块创建,您的第一个文件,从现在开始不再适用。
None of the above work for me. Mine is Visual Studio 2017 - Professional
但我在这里使用我的解决方案让它工作 -->
- 您必须通过封闭的
/// <reference path="yourpath"/>
引用源代码,即使源代码与您的代码位于同一文件夹中。
- 不要使用 压缩源。您的所有来源都必须 非缩小 。
- 如果您将路径 stmts 存储在 _reference.js 文件中,请确保该文件与您的代码文件位于同一目录中。
虽然我可以将引用stmt放在我的代码文件中,但我选择使用一个单独的文件“_reference.js”来存储它。
你可以把这个和你的代码放在一起:
/// <reference path="../_assets/JS-Main/angular-1.3.13.js" />
var app = angular.module('app', ['ui.grid', 'ui.bootstrap']);
app.controller('MainCtrl', ['$scope', '$http', function ($scope, $http) {
或者您可以将此行输入到您的 _reference.js 文件中
/// <reference path="../_assets/JS-Main/angular-1.3.13.js" />
完成上述所有操作后,您应该能够看到 angular 智能感知。
您可以对其他人的智能感知做同样的事情,例如 jQuery、Anytime、_underscore 等...只需将路径语句添加到 _reference.js 文件中,您还可以复制 _reference.js 文件到其他网站,如果他们有相同的目录结构。祝你好运!
根据这个 post intellisense 也应该在新的 VS 2015 上工作,但到目前为止我只得到 angular 对象的 intellisense 而不是依赖项或我的自定义模块。
这是我所做的:
- 将 angular.intellisense.js 添加到全局 javascript 引用
C:\Program Files (x86)\Microsoft Visual Studio 14.0\JavaScript\References
- 重启VS2015 然后什么也没有,每当我尝试在 $http 对象上使用智能感知时,它只会显示感叹号。
我也将文件添加到 angular.js 所在的位置,但仍然无法正常工作。在这种情况下,我的问题是,我应该把文件放在哪里?在只有我的 angular.js 的 angular public 文件夹中,或者在我的开发 angular 文件夹中,其中包含从 bower 下载的所有文件。
我也尝试将它直接添加到 tools/options/text editor/javascriptr/intellisense/reference 菜单中,在隐式(Web)参考组中,但它仍然没有用。
在我的项目中,src 文件夹中有以下文件夹结构:
- wwwroot
- app(我的 angular 网站内容)
- 控制器
- 服务
- 观看次数
- lib(js依赖,只有各个库的.min.js文件)
- angular
- angular-路线
- .....
- _references.js(visual studio js 引用文件,包含对 app 和 lib 文件夹中文件的引用)
- app(我的 angular 网站内容)
- 库(包含 bower 下载的完整库)
- angular
- angular-路线
- ...
附带说明一下,我没有 /scripts 文件夹,因此没有 /scripts/_references.js
文件
.
按照本文为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 文件,并在必要时使用它们(用于智能感知等)。
我的问题是我使用 CDN/http:// 地址引用 Angularjs,因此 Visual studio 没有关于 angular.[=10= 的任何信息]
尝试直接下载 angularjs js 文件并将其包含在您的项目中并在您的 index.html 中引用,重建(以防万一)并重试,希望它能正常工作。
希望我有所帮助。
我有这个 RTM 问题 ..除了 angular 对象和 hello world 复杂性 senario($http 和所有自定义对象不工作)..遵循 _references 设置。我唯一的怀疑是我从 RC 升级到 RTM(没有全新安装)在 Git [link]github.com/jmbledsoe/angularjs-visualstudio-intellisense/issues/… ..Grabbing a VHD 上造成了问题赢得 10 张图像并在 d/l 完成后尝试 :( –
更新
好的,这里有一点帮助就是答案....智能感知引擎永远不会看到正在创建名为 "sportsStore" 的模块,因为它是在脚本的 app.html 文件中创建的区块:
<script>
angular.module("sportsStore", ["customFilters","cart"]);
</script>
VS Intellisense 引擎是 "executing" 您项目中的代码,以便发现如何完成代码。它使用 _references.js 文件作为起点,并按顺序执行该文件中的每个引用。由于 VS Intellisense 从不执行创建名为 "sportsStore" 的 AngularJS 模块的代码行,因此它不知道如何完成代码。
将上面的 JavaScript 代码移动到它自己的 JS 文件中(我们称它为 "app.js")并在 _references.js 中包含对它的引用。确保 "app.js" 引用紧跟在 "angular.js" 引用之后,因为您需要它在其他脚本文件配置它之前创建模块。 :D
我遇到了类似的问题,结果发现 Resharper 阻止了我在 _references.js 文件中设置的所有 JavaScript 智能感知。
我遇到了同样的问题。当我添加 angular 时,VS 2015 (RTM) 修改了我的 _references.js;基本上它删除了我在文件中的一些行。当我在 _references.js 中添加 angula 的参考时,如下所示
/// <reference path="lib/angular/angular.js" />
我在 VS 2015 中获得了 Angular 1.4.3 的智能感知!
这在 Visual Studio 2015 RTM 网络项目中对我不起作用,但我解决了问题。
此项目不是使用 Visual Studio 创建的,并且在任何地方都没有 _references.js
文件。所以我认为这在任何情况下都有效。
我从 VS UI 中删除了所有其他智能感知资源,以确保我所做的是修复它的方法。
- 转到 https://www.angularjs.org 并拉出下载对话框。
- 复制未压缩的 CDN url。今天恰好是 https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.js
- 在 Visual Studio 2015 RTM 中,转到
Tools, Options, Text Editor, Javascript, Intellisense, References
。选择合适的参考组;对于大多数 Web 项目,这是Implicit (Web)
。将 url 粘贴到底部文本框,然后单击 添加 按钮。不要关闭对话框。 - 在
Text Editor, Javascript, Intellisense, General
下,确保选中Download remote references
的复选框。 - 单击确定按钮。
- (可选)如果您希望为您创建的 angular 提供程序(不是 angular 框架的一部分)提供智能感知,请将
_references.js
添加到项目的根目录。不要费心制作Scripts
文件夹。右键单击它并选择 auto-sync,然后选择更新。进入它并删除由构建过程创建的所有 js 文件。如果不这样做,它们可能会很大,以至于会破坏智能感知。第一次使用 intellisense 时请准备好大约 5-10 秒的延迟,因为它必须从您的项目中加载所有这些引用。 - 如果 javascript Resharper 会干扰本机智能感知,您可能需要在 Resharper 中禁用智能感知。
- 重新启动 Visual Studio。在您执行此操作之前,它不会起作用。另外,我偏执于先关闭除此实例之外的所有其他实例,因此这些设置 "stick"。所以我建议你在重启这个实例之前这样做。
只需在项目根目录下名为 'Scripts'(命名约定)的文件夹中创建一个 _references.js 文件。使用必要的 javascript 文件更新它,您应该能够获得智能感知。 link 为什么需要这样的东西:http://madskristensen.net/post/the-story-behind-_referencesjs
我刚刚意识到 _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" />
正如@Balthasar 指出的(如果您使用的是 Resharper),您需要从 Visual Studio 启用智能感知才能工作:
Resharper -> 选项 -> 环境 -> 智能感知 -> 常规,select 'Custom Intellisense' 对于 Javascript 你可以 select Visual studio。或者,您可以使用 'Visual Studio' 语句完成(第二个选项)
Visual Studio AngularJS 的 intellisense 非常多愁善感(这是一种很可能开发不善的好说法)。
因此,即使使用 _references.js 文件配置好所有内容,并且您获得了 jQUERY 等其他库的智能感知,您很可能不会获得 AngularJS 的智能感知。
例如,在 VS 2015 社区中,以下指令不会显示 $http angular 对象的智能感知,尽管代码一切正常:
在下图中,我向模块添加了一个空数组(这意味着模块将被创建,如果存在另一个同名的模块,它将被覆盖),智能感知开始工作:
这是一段代码供您自己测试(尝试在此处添加空数组):
(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) {
}
}
})();
PS:如果您在解决方案资源管理器中单击项目中的任何文件夹并按 Ctrl
+Alt
+A
添加新项目,您获得添加 AngularJs 指令的建议,如果你这样做,该指令将像我刚刚向你展示的那样,模块声明中没有空数组,因此智能将无法使用它。它不适用于 Microsoft 提供给用户的示例...仅适用于模块创建,您的第一个文件,从现在开始不再适用。
None of the above work for me. Mine is Visual Studio 2017 - Professional
但我在这里使用我的解决方案让它工作 -->
- 您必须通过封闭的
/// <reference path="yourpath"/>
引用源代码,即使源代码与您的代码位于同一文件夹中。 - 不要使用 压缩源。您的所有来源都必须 非缩小 。
- 如果您将路径 stmts 存储在 _reference.js 文件中,请确保该文件与您的代码文件位于同一目录中。
虽然我可以将引用stmt放在我的代码文件中,但我选择使用一个单独的文件“_reference.js”来存储它。
你可以把这个和你的代码放在一起:
/// <reference path="../_assets/JS-Main/angular-1.3.13.js" />
var app = angular.module('app', ['ui.grid', 'ui.bootstrap']);
app.controller('MainCtrl', ['$scope', '$http', function ($scope, $http) {
或者您可以将此行输入到您的 _reference.js 文件中
/// <reference path="../_assets/JS-Main/angular-1.3.13.js" />
完成上述所有操作后,您应该能够看到 angular 智能感知。
您可以对其他人的智能感知做同样的事情,例如 jQuery、Anytime、_underscore 等...只需将路径语句添加到 _reference.js 文件中,您还可以复制 _reference.js 文件到其他网站,如果他们有相同的目录结构。祝你好运!