如何告诉 Visual Studio 只加载我当前正在调试的扩展(仅此而已)?

How to tell Visual Studio to load only the extension I'm currently debugging (and nothing more)?

我读过How to debug Visual Studio extensions

事实上,VS2013 会为此自动设置扩展项目。

我有很多扩展(还有附加组件等等:Resharper、OzCode、GitExtensions..)。显然,它们的加载时间都很慢。

有没有办法在 "clean" Visual Studio 上 运行 扩展调试会话?只是香草:除了调试下的扩展之外没有安装任何东西。

编辑:只是想澄清一点:resharper 没有在实验性配置单元中加载自身,但是一些其他扩展是

欢迎来到Visual Studio可扩展性的精彩世界!

为了为任何严肃的扩展开发准备好环境,您需要做几件事,包括移动已安装的扩展和更改 Visual Studio 配置文件。下面简单介绍一下流程:

先决条件

在继续之前,这是每个扩展开发人员需要具备的 "knowledge" 必要条件:

  1. What's a PkgDef? - 关于 Visual Studio 包格式的重要信息
  2. VSIX discovery - Visual Studio 如何发现和加载 VSIX 包
  3. Custom hives - 运行宁多个 Visual Studio 配置文件

前两篇文章已经很老了,但它们仍然包含重要信息。在 Visual Studio 2012 及更高版本中,VSIX 发现过程略有更改,因此 Visual Studio 而不是 在每次启动时重建程序包缓存。要重建包缓存,运行 来自 提升的 特定版本 Visual Studio 的开发人员命令提示:

devenv /Setup

或使用未记录的命令:

devenv /updateconfiguration

不需要提升,而是告诉 Visual Studio 在下次重新启动时刷新其包缓存。

大多数时候,您安装的所有扩展(例如 ReSharper、OzCode、Gallery 中的其他扩展)将默认安装 每台机器,方法是将它们放在 %VSINSTALLDIR%\Common7\IDE\Extensions。请记住,默认的 pkgdef 搜索路径(由 devenv.pkgdef 定义)是:

"PkgDefSearchPath" = $ApplicationExtensionsFolder$;$RootFolder$\Common7\IDE\CommonExtensions;$RootFolder$\Common7\IDE\devenv.admin.pkgdef;"

这意味着,无论何时在任何配置单元中启动 Visual Studio,它都会首先查看已安装扩展的每台计算机位置,然后加载它们。每当您创建一个新的 VSIX 项目时,默认设置是在 /RootSuffix Exp 配置单元中启动它,它仍然会首先尝试加载每台计算机的扩展。

这让我来回答你的问题。

为了防止扩展加载到您的其他配置单元中,需要将它们移动到每个 配置单元 位置:%LOCALAPPDATA%\Microsoft\VisualStudio\<vsVersion><hive>\Extensions。 Visual Studio 的更高版本(2013 及更高版本)允许您从 Visual Studio 设置执行此操作,但您需要 运行 Visual Studio 作为管理员才能工作:

但是,不用 运行ning 作为管理员,可以修改默认包搜索路径,以在其中包含每个用户的位置。然后,手动将扩展程序移动到新位置。

这是你要做的:

  1. 打开提升权限的记事本(++)(右键单击 - 运行 以管理员身份)
  2. 打开文件devenv.pkgdef,位于Visual Studio安装目录,例如`C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.pkgdef
  3. PkgDefSearchPath中,添加$AppDataLocalFolder$\Extensions;作为第一个值,在$ApplicationExtensionsFolder$之前,所以它看起来像这样:
  4. 保存文件

现在您可以转到 Common7\IDE\Extensions 文件夹,然后将这些扩展的目录 移动到每个用户的位置。例如,如果您想在 Visual Studio 2015 中移动 NC运行ch,请将整个文件夹 Remco Software 移动到 %LOCALAPPDATA%\Microsoft\VisualStudio.0\Extensions.

最后,通过 运行 上面两个命令之一刷新 Visual Studio 程序包缓存。当您 Visual Studio 时,它仍会加载扩展,但每当您 运行 另一个配置单元(Exp 或任何其他)时,将不会加载那些每个用户的扩展。

这似乎是一个复杂的过程,但您只需要做一次,而且只针对 "huge" 扩展(主要是 ReSharper)。请注意,从 v9 开始,ReSharper 会在每个配置单元中自行安装,因此您甚至不必再这样做!

抱歉解释冗长,希望对您有所帮助!

我觉得的回答对你有帮助。 “运行 Visual studio 与自定义 Hive 中的包(不是 Exp)