【问题标题】:How can I disable Task Runner Explorer in Visual Studio?如何在 Visual Studio 中禁用 Task Runner Explorer?
【发布时间】:2015-06-24 20:25:10
【问题描述】:

Task Runner Explorer 只是在 Visual Studio 2015 RC 中为我抛出错误,我只想禁用它并像往常一样从命令行运行我的 gulp 文件。有没有办法关闭 Task Runner Explorer?

【问题讨论】:

  • 我实际上在输出窗格中看到了错误,我没有打开任务运行器资源管理器窗格。

标签: gulp visual-studio-2015 task-runner-explorer


【解决方案1】:

毕竟我能够以干净且微创的方式解决禁用任何不必要的 Visual Studio 包的问题,​​这不需要更改 VS 配置文件或摆弄注册表!这包括 Task Runner 工具、导致大量 VS 不稳定和减速的 VsHub 工具,以及它附带的 150 多个 VS 包中的任何其他 VS 包。

这里是一个简短的回顾: VS 的基本功能组件是一个包(不要将它与 NuGet 包混为一谈——这些与这里无关)。 您可以从 Web 安装的所有扩展(以及许多预安装的)都采用 VSIX 的形式,它是扩展包格式。 Visual Studio 有一个 API(未发布,但仍然),它可以与 VSIX 包一起使用,包括查找它们和启用/禁用它们。不幸的是,它只能处理 VSIX 并且看不到纯 VS 包。这是设计声明的——纯 VS 包被认为是系统组件,没有支持的方式来禁用它们。或者他们说…… 我已经反编译了用于扩展诊断的官方(虽然严重过时)MS 插件,发现它直接与注册表进行了大量摆弄以获取有关已安装 VSPackages 的信息,但甚至没有尝试在那里更改任何内容(想想禁用)。 我自己对 HKCU\Software\Microsoft\VisualStudio 的调查发现,那里庞大而复杂的数据结构是无用的,因为它只是 VS 随机且经常刷新的 VS 内部状态的缓存,所以即使我们弄清楚如何禁用通过注册表的包是没有意义的,因为 VS 会立即覆盖它。

最终让我找到最终解决方案的两条线索是: 1.有一个文件 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.pkgdef 那个文件的内容不是特别有趣,但是我的C++过去给了我一个提示,如果有PkgDef ,很有可能还有 PkgUnDef,即使它通常不存在。 ProcMon 确认在启动期间 VS 检查 devenv.pkgundef 文件是否存在,并且我在正确的路径上。 2. 第二个提示——我知道其他一些产品(想想 SQL Server Management Studio)变相使用 VS Shell(这就是为什么你仍然在你的 Add\Remove 程序中看到 VS 2010——它是 SQL SMS)。而那些其他产品显然有办法删除大部分 VS 功能,只留下他们真正需要的一些功能。所以我了解了他们是如何做到的,然后你就可以再次使用 pkgundef 文件了!

只需进行几次探测和注册表扫描,即可为 devenv.PkgUnDef 写入正确的内容,从而摆脱我不喜欢的软件包,并且没有明显的副作用或不良后果。

我的 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.pkgundef 看起来像这样:

// Exclude TaskRunnerExplorer
[$RootKey$\Packages\{b483c4e7-43a6-4f7b-a9a1-79e2c5d12148}]
// Exclude VsHubServicePackage
[$RootKey$\Packages\{F419E6BB-F72F-42CF-ACFE-D0D0E17FCB17}]
// Exclude JavaScriptWebExtensionsPackage
[$RootKey$\Packages\{30db8f9b-ec9f-44d6-b377-83c7c27a1a8b}]

要检查您已加载的特定包,Extension Analyser。它已经过时了,所以我一起破解了一个适用于 VS 2015 here 的版本。

查看 VS 变慢的另一种方法是使用 /Log 参数运行它并应用 Activity Log Proviler

希望它能帮助人们重拾轻薄快速的 Visual Studio! 康斯坦丁

【讨论】:

  • 伟大的调查。知道是否在某处提到了 Microsoft.VisualStudio.Web.Extensions 提供的功能(无需查看包)?
  • Răzvan,请澄清你的问题,或者更好 - 解释你的目标,我会尽力回答。
  • 要禁用 Microsoft.VisualStudio.Web.Extensions 插件,最好知道它的作用,否则可能会搞砸。很好奇您是否有任何关于该插件为 Visual Studio 带来哪些功能的信息(也许您可以提供链接)。
  • 我已编辑我的答案以添加更多参考资源。
  • 我已经刷新了链接,但旧链接仍然对我有用,所以我不确定。如果它仍然不适合您,请告诉我,我会尝试使用不同的服务。
【解决方案2】:

在 Visual Studio 2015 中,您可以阻止 Gulp 在每次构建时运行。

  • 打开Task Runner Explorer
  • 点击绑定标签(如下所示)
  • 选择树中的任何条目并按删除

完成后,绑定树应如图所示,每个顶级项目后都有零。


请注意,通过 UI 进行上述更改最终会从 gulpfile.js 本身中删除项目,因此您可以通过删除任何类似内容来轻松进行此更改:

/// <binding AfterBuild='default' />
/// <binding Clean='clean' />

【讨论】:

  • 知道如何在不删除它们和更改声明的情况下更轻松地“切换”这些功能吗?我问的原因是,我的 gulp 任务很慢(即复制文件)。有时我只是想知道我的构建在语法上是否良好,而不是一直运行我的 gulp 任务。
  • @atconway 也许您可以更改 gulpfile 中的 &lt;binding&gt; 元素。也许从三个斜线变为两个?我知道这不是那么快,但我想不出更快的方法。您可以使用配置管理器设置排除整个项目的配置文件,但这可能会更慢切换。
  • 我还注意到在此期间每个任务都有一个右键单击选项。右键单击可以快速切换每个构建状态是否启用。
【解决方案3】:

底部的链接解释了如何禁用 Visual Studio 中内置的包(扩展)。

基本上:

  • 导航到C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools
  • 备份extension.vsixmanifest文件和TaskRunnerExplorer目录。
  • 查看 TaskRunnerExplorer\*.pkg 文件并记下文件顶部的 GUID 键(例如 [$RootKey$\Packages\{b483c4e7-43a6-4f7b-a9a1-79e2c5d12148}])。
  • 编辑 extension.vsixmanifest 文件并删除任何提及 TaskRunnerExplorer。
  • 删除TaskRunnerExplorer目录。
  • HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0_Config\Packages\ 内部的注册表中备份和删除 GUID 键。目前,这些键是 {8da206d4-9521-4f38-92c9-a8d5d0af611c}{b483c4e7-43a6-4f7b-a9a1-79e2c5d12148}

注意:要编辑 Program Files (x86) 中的文件,您必须以管理员模式运行记事本应用程序,或者从您拥有的目录中编辑副本,然后覆盖原始文件。 p>

http://blog.spinthemoose.com/2012/12/28/how-to-unregister-a-visual-studio-package-extension/

http://blog.spinthemoose.com/2013/01/02/the-correct-way-to-uninstall-visual-studio-packages-extensions/

【讨论】:

  • 我不希望 VS 2015 在打开 Web 项目时运行 grunt 或在保存 package.json 时运行 npm install,这个解决方案对我有用。谢谢韦恩!
【解决方案4】:

每当我打开我们的网站解决方案时,我都会一遍又一遍地在使用 Visual Studio 2015 旋转大量 node.exe 实例时遇到问题。这导致他们安装在我们开发盒上的 McAfee nannyware 和戴尔加密软件发疯了。

在这一切之间,它几乎消耗了整个 CPU。不用说,这让事情变得……难以……完成任务。

所以,我开始考虑一些事情,我想如果我可以删除 nodenpmgulp 二进制文件,它们至少不会消耗任何 CPU。所以,我写了可以想象的最简单的存根控制台应用程序。我自己的版本

  • node.exe
  • gulp.exe
  • npm.exe
  • 和一个简单地运行我的npm.exenpm.cmd,将它的命令行参数传递很长。

每个可执行文件唯一要做的就是使用log4net 并将一行写入日志文件,其中包含可执行文件的名称并列出调用可执行文件的参数。我将其中的 4 个单独放在一个目录中,并使用帖子 Synchronize Node.JS Install Version with Visual Studio 配置 Visual Studio 2015 以将我的存根可执行文件放在搜索路径的顶部。

好吧……

结果表明 Visual Studio 2015 反复调用 npm,如下所示:

npm ls -g

所以我去了我们项目的根目录并运行相同的命令(使用真正的二进制文件)。瞧,npm 正在投掷并报告错误,试图打开一个不存在的package.json,位于树根处

C:\Users\{user-id}\AppData\Roaming\npm\node_modules

它看起来像是很久以前留下的空目录。一旦我删除了它试图打开一个不存在的package.json 的空目录,生活是美好的。

注意:有人通过评论请求了我在此处描述的存根可执行文件。你可以在 Github 中找到它们的源代码https://github.com/nbcarey/vs2015-node-stubs/

享受吧。

【讨论】:

  • 你能分享你写的存根版本吗?我还想调试我的 VS 安装。
  • @Monsignor。我只是将它们推送到 github。看到我编辑的位置答案。
  • @NicholasCarey 我的症状和你完全一样,存根所有可执行文件,什么也没发生。没有记录一个呼叫,但如果我使用普通的 exe,有​​十亿个 node.exe 和 conhost.exe 正在运行。
【解决方案5】:

这不是“在 Visual Studio 中”,但您可以打开 gulpfile.js 并删除文件顶部生成的行。之后您可能还需要重新加载您的解决方案,我不确定。

我也来到这里寻找答案,只是注意到我的 gulpfile.js 中有一个新行。我查看了它何时开始,结果发现当我将 Azure SDK 升级到 2.7 并开始使用 Visual Studio 2015 RTM 时,它在我的 gulpfile 中注入了这一行。

如果有人确实找到了通过 Visual Studio 执行此操作而不是破解文件中生成的行的方法,我也想知道。

【讨论】:

  • 这只是在你附加了绑定的情况下,这实际上不会停止任务运行器来识别 gulpfile 或启动一系列内部 npm 任务
【解决方案6】:

打开 Task Runner 窗格并禁用所有“On Build”操作。

【讨论】:

  • 我看到“构建前”、“构建后”、“清理”、“项目打开”部分。我的 gulpfile.js 在每个下,但我没有看到禁用任何东西的选项 - 没有右键菜单或任何东西。也许我在看错东西?我去了查看 -> 其他 Windows - 任务运行器资源管理器
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-24
  • 2018-03-16
  • 1970-01-01
  • 1970-01-01
  • 2015-04-07
  • 2018-05-05
  • 2015-11-06
相关资源
最近更新 更多