如何在解决方案加载时禁用 Visual Studio 2015 及更高版本的自动 Bower 安装?

How to disable Visual Studio 2015 and above automatic bower install on solution load?

每当我在 Visual Studio 2015 或 2017 RC 中打开解决方案时,它都会自动启动 运行 bower install 在其中一个项目上。 bower 安装输出可以在 Output 视图下的 Bower/NPM 输出中看到:

PATH=X:\iis\wwwroot\LeExampleProjectName\.\node_modules\.bin;%PATH%
"C:\Users\PC118\AppData\Roaming\npm\Bower.cmd" install --force-latest
bower angular#1.3.14            cached git://github.com/angular/bower-angular.git#1.3.14
bower angular#1.3.14          validate 1.3.14 against git://github.com/angular/bower-angular.git#1.3.14
bower bootstrap#3.3.2           cached git://github.com/twbs/bootstrap.git#3.3.2
bower bootstrap#3.3.2         validate 3.3.2 against git://github.com/twbs/bootstrap.git#3.3.2
bower moment#~2.10.3            cached git://github.com/moment/moment.git#2.10.6
bower moment#~2.10.3          validate 2.10.6 against git://github.com/moment/moment.git#~2.10.3
bower angular-sanitize#1.3.14   cached git://github.com/angular/bower-angular-sanitize.git#1.3.14
bower angular-sanitize#1.3.14 validate 1.3.14 against git://github.com/angular/bower-angular-sanitize.git#1.3.14
bower lodash#3.3.1              cached git://github.com/lodash/lodash.git#3.3.1
bower lodash#3.3.1            validate 3.3.1 against git://github.com/lodash/lodash.git#3.3.1
bower angular-ui-select#~0.12.0 cached git://github.com/angular-ui/ui-select.git#0.12.1
bower angular-ui-select#~0.12.0         validate 0.12.1 against git://github.com/angular-ui/ui-select.git#~0.12.0
bower angular-animate#1.3.14              cached git://github.com/angular/bower-angular-animate.git#1.3.14
bower angular-animate#1.3.14            validate 1.3.14 against git://github.com/angular/bower-angular-animate.git#1.3.14
bower angular-strap#2.2.0                 cached git://github.com/mgcrea/angular-strap.git#2.2.0
bower angular-strap#2.2.0               validate 2.2.0 against git://github.com/mgcrea/angular-strap.git#2.2.0
bower selectize#0.8.5                     cached git://github.com/brianreavis/selectize.js.git#0.8.5
bower selectize#0.8.5                   validate 0.8.5 against git://github.com/brianreavis/selectize.js.git#0.8.5
bower microplugin#0.0.x                   cached git://github.com/brianreavis/microplugin.js.git#0.0.3
bower microplugin#0.0.x                 validate 0.0.3 against git://github.com/brianreavis/microplugin.js.git#0.0.x
bower jquery#>=0.6.0                      cached git://github.com/jquery/jquery.git#2.1.4
bower jquery#>=0.6.0                    validate 2.1.4 against git://github.com/jquery/jquery.git#>=0.6.0
bower sifter#0.3.x                        cached git://github.com/brianreavis/sifter.js.git#0.3.4
bower sifter#0.3.x                      validate 0.3.4 against git://github.com/brianreavis/sifter.js.git#0.3.x
bower jquery#>= 1.9.1                     cached git://github.com/jquery/jquery.git#2.1.4
bower jquery#>= 1.9.1                   validate 2.1.4 against git://github.com/jquery/jquery.git#>= 1.9.1
bower lodash#3.3.1                       install lodash#3.3.1
bower moment#~2.10.3                     install moment#2.10.6
bower angular-sanitize#1.3.14            install angular-sanitize#1.3.14
bower angular-ui-select#~0.12.0          install angular-ui-select#0.12.1
bower angular#1.3.14                     install angular#1.3.14
bower selectize#0.8.5                    install selectize#0.8.5
bower angular-animate#1.3.14             install angular-animate#1.3.14
bower microplugin#0.0.x                  install microplugin#0.0.3
bower sifter#0.3.x                       install sifter#0.3.4
bower angular-strap#2.2.0                install angular-strap#2.2.0
bower bootstrap#3.3.2                    install bootstrap#3.3.2
bower jquery#>= 1.9.1                    install jquery#2.1.4
lodash#3.3.1 bower_components\lodash
moment#2.10.6 bower_components\moment
angular-sanitize#1.3.14 bower_components\angular-sanitize
└── angular#1.3.14
angular-ui-select#0.12.1 bower_components\angular-ui-select
└── angular#1.3.14
angular#1.3.14 bower_components\angular
selectize#0.8.5 bower_components\selectize
├── jquery#2.1.4
├── microplugin#0.0.3
└── sifter#0.3.4
angular-animate#1.3.14 bower_components\angular-animate
└── angular#1.3.14
microplugin#0.0.3 bower_components\microplugin
sifter#0.3.4 bower_components\sifter
angular-strap#2.2.0 bower_components\angular-strap
└── angular#1.3.14
bootstrap#3.3.2 bower_components\bootstrap
└── jquery#2.1.4
jquery#2.1.4 bower_components\jquery

有没有办法禁用这个自动安装的 Bower?还有其他配置方式吗?

似乎无法针对特定解决方案或项目禁用此功能,但这里是如何全局禁用它:

  • 在 VS 中,转到“工具”>“选项”>“项目和解决方案”>“外部 Web 工具”
  • 禁用所有搜索路径,在我的例子中有四个

请注意,输出 window 可能会在解决方案加载期间显示一些错误。就我而言,它抱怨找不到 gulp。但是,这没有负面影响。

从命令行调用时,所有工具都按预期工作。

在 VS 2017 和更新版本中,您可以转到:

Tools -> Options -> Projects and Solutions -> Web Package Management -> Package Restore

并将您不希望在项目打开或保存时发生的恢复设置为 false:

您可以从 Visual Studio 项目中排除 bower.json 文件,但将其保留在项目目录中以手动 运行 bower。

在我自己的案例中(VS2015),我在我的项目目录中发现了一个伪造的 package.json 文件。

删除 package.json 文件后,我每次打开项目时 Bower 都不会尝试 运行 "npm install"。

只是 post 为这个问题提供一个更新的解决方案,以防有人偶然发现这个 post...

工具 -> 选项 -> 项目和解决方案 -> Web 包管理 -> 包还原

然后将相应的设置转为"False"。