AngularJS 智能感知无法在 Visual Studio 2015 上运行

AngularJS intellisense not working on Visual Studio 2015

根据这个 post intellisense 也应该在新的 VS 2015 上工作,但到目前为止我只得到 angular 对象的 intellisense 而不是依赖项或我的自定义模块。

这是我所做的:

  1. 将 angular.intellisense.js 添加到全局 javascript 引用 C:\Program Files (x86)\Microsoft Visual Studio 14.0\JavaScript\References
  2. 重启VS2015 然后什么也没有,每当我尝试在 $http 对象上使用智能感知时,它只会显示感叹号。

我也将文件添加到 angular.js 所在的位置,但仍然无法正常工作。在这种情况下,我的问题是,我应该把文件放在哪里?在只有我的 angular.js 的 angular public 文件夹中,或者在我的开发 angular 文件夹中,其中包含从 bower 下载的所有文件。

我也尝试将它直接添加到 tools/options/text editor/javascriptr/intellisense/reference 菜单中,在隐式(Web)参考组中,但它仍然没有用。

在我的项目中,src 文件夹中有以下文件夹结构:

附带说明一下,我没有 /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 中删除了所有其他智能感知资源,以确保我所做的是修复它的方法。

  1. 转到 https://www.angularjs.org 并拉出下载对话框。

  1. 复制未压缩的 CDN url。今天恰好是 https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.js
  2. 在 Visual Studio 2015 RTM 中,转到 Tools, Options, Text Editor, Javascript, Intellisense, References。选择合适的参考组;对于大多数 Web 项目,这是 Implicit (Web)。将 url 粘贴到底部文本框,然后单击 添加 按钮。不要关闭对话框。
  3. Text Editor, Javascript, Intellisense, General 下,确保选中 Download remote references 的复选框。
  4. 单击确定按钮。
  5. (可选)如果您希望为您创建的 angular 提供程序(不是 angular 框架的一部分)提供智能感知,请将 _references.js 添加到项目的根目录。不要费心制作 Scripts 文件夹。右键单击它并选择 auto-sync,然后选择更新。进入它并删除由构建过程创建的所有 js 文件。如果不这样做,它们可能会很大,以至于会破坏智能感知。第一次使用 intellisense 时请准备好大约 5-10 秒的延迟,因为它必须从您的项目中加载所有这些引用。
  6. 如果 javascript Resharper 会干扰本机智能感知,您可能需要在 Resharper 中禁用智能感知。
  7. 重新启动 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

但我在这里使用我的解决方案让它工作 -->

  1. 您必须通过封闭的 /// <reference path="yourpath"/> 引用源代码,即使源代码与您的代码位于同一文件夹中。
  2. 不要使用 压缩源。您的所有来源都必须 非缩小
  3. 如果您将路径 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 文件到其他网站,如果他们有相同的目录结构。祝你好运!