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

jun*_*ole 4 debugging vsix visual-studio-2013

我已经阅读了如何调试Visual Studio扩展.

事实上,VS2013会自动设置扩展项目.

我有许多扩展(也是附加组件等等:Resharper,OzCode,GitExtensions ..).显然,所有这些都有缓慢的加载时间.

有没有办法在"干净​​"的Visual Studio上运行扩展调试会话?只是vanilla:没有安装,除了调试下的扩展.

编辑:只是想清楚一点:resharper并没有在实验蜂巢中加载自己,但其他一些扩展也是如此

Iga*_*nik 11

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

为了为任何严格的扩展开发准备环境,您需要做几件事,包括移动已安装的扩展和更改Visual Studio配置文件.以下是有关该过程的简要说明:

先决条件

在进一步研究之前,这里是每个扩展开发人员需要拥有的必要"知识":

  1. 什么是PkgDef? - 有关Visual Studio包格式的重要信息
  2. VSIX发现 - Visual Studio如何发现并加载VSIX包
  3. 自定义配置单元 - 运行多个Visual Studio配置文件

前两篇文章相当陈旧,但它们仍然掌握着至关重要的信息.在Visual Studio 2012及以上,VSIX发现过程微微一变,让Visual Studio中并没有重建每次启动包缓存.要重建包缓存,请从提升中运行特定版本的Visual Studio开发人员命令提示符处:

devenv /Setup
Run Code Online (Sandbox Code Playgroud)

或使用无证件命令:

devenv /updateconfiguration
Run Code Online (Sandbox Code Playgroud)

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

在大多数情况下,安装所有扩展(如ReSharper的,OzCode,从画廊其他扩展)默认情况下将安装自己的每台机器,通过将自己%VSINSTALLDIR%\Common7\IDE\Extensions.请记住,默认的pkgdef搜索路径(由定义devenv.pkgdef)是:

"PkgDefSearchPath" = $ApplicationExtensionsFolder$;$RootFolder$\Common7\IDE\CommonExtensions;$RootFolder$\Common7\IDE\devenv.admin.pkgdef;"
Run Code Online (Sandbox Code Playgroud)

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

这让我回答你的问题.

为了防止在其他蜂箱装的扩展,需要将它们转移到以每个蜂巢的位置:%LOCALAPPDATA%\Microsoft\VisualStudio\<vsVersion><hive>\Extensions.Visual Studio(2013及更高版本)的更高版本允许您从Visual Studio设置执行此操作,但您需要以管理员身份运行Visual Studio才能工作:

但是,不是以管理员身份运行,而是可以修改默认包搜索路径,以在其中包含每用户位置.然后,手动将扩展名移动到该新位置.

这是你做的:

  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中移动NCrunch,请获取整个文件夹Remco Software,然后将其移至%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\Extensions.

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

它似乎是一个涉及的过程,但你只需要做一次,而只是为了"巨大的"扩展(主要是ReSharper).请注意,从v9开始,ReSharper会自行安装,因此您甚至不必再这样做了!

很抱歉很长的解释,希望有所帮助!