毕竟我能够以干净且微创的方式解决禁用任何不必要的 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!
康斯坦丁