VS 2002-2005 的插件管理器
完全控制加载到 VS2002-2005 的插件 - 适用于高级用户或插件开发人员
工具
使用 AddIn Manager,您可以启用/禁用加载项,设置加载选项,并执行那些有时只是必需的、令人头疼的 ResetAddin 操作。此外,它还能让您探索 Visual Studio 搜索加载项的所有位置。
对我而言,Visual Studio 2005 中的加载项管理已损坏;搜索和加载机制比以往任何时候都更复杂、更不透明,并且像启用加载项、控制其加载时间等宣传的功能通常不起作用。由于 SP1 似乎也没有改变这一点,我决定发布这篇文章。
这个工具肯定不完美(UI 尤其糟糕),但它让您可以完全控制您的加载项——无论您是创建它们还是“只是”使用它们。
它是使用 VS 2005 开发并为其测试的。它也应该适用于 VS 2002 和 VS 2003——我也玩过一些过时的 VS2003 注册表项,但这不算测试,对吧?
注意:这是通宵赶工的成果,面向高级用户。虽然我从未遇到过问题,但确实存在搞砸事情的可能性。您必须在进行更改后重新启动 Visual Studio。另外,在更新或卸载加载项时,请确保您没有禁用它,因为这会留下一些过时的文件,并可能使这个可怜的小工具感到困惑。
使用 Addin Manager
对话框提供了一个加载项搜索位置的树状结构,每个位置都可用于“当前用户”和“本地计算机”。在每个位置下,列出了实际的加载项。
“无注册表搜索路径”是 Visual Studio 205 搜索 .vsaddin 文件并自动加载加载项的文件夹。
理论上,加载项的安装程序只需将一些文件复制到那里——无需修改注册表。然而,由于这些位置的文档记录很差,并且可以自由配置,但其当前设置无法(合法地)被安装程序发现,因此这并没有按预期工作,所以大多数加载项开发人员仍然使用注册表方法。
当然,VS 2005、2003 和 2002 的注册表项也都可以访问。
启用/禁用加载项
您可以使用复选框启用/禁用单个加载项,以及一些(但不是全部)搜索路径和注册表项。
当您启用/禁用一个加载项或文件夹时,它会被重命名,使其 Visual Studio 无法识别(但仍然存在)。
请注意,并非所有复选框都有效,因为我找不到一种方法来显示它们——只能显示在选定的项目上。(我猜可以通过修改状态图像列表来隐藏它们,但这留待日后处理)。
在哪里?
您可以点击“探索”链接来查找选定项目(加载项、搜索路径、注册表项)的位置。对于无注册表路径和加载项,这将启动资源管理器并选中指定项。
对于注册表项,这将启动 regedit
,您需要从 regedit 菜单中选择 **收藏夹/AddIn Manager - 最后一个探索**。
ResetAddIn
我不知道如何委婉地说,所以我就直说了:有时,Visual Studio 会忘记您的加载项。它们在那里,但没有显示出来。Visual Studio 有一个 /ResetAddin
选项可以重置指定名称的加载项——现在您可以通过 AddinManager
来做到这一点。
如果您选择了一个 **加载项**,您可以在 ResetAddins
之后点击 VS2005 / VS2003 / VS2002 链接中的一个。这会尝试启动相应的 Visual Studio 版本,并...
/ResetAddin <your currently selected addin>
...在命令行上。
设置加载选项
这可能对开发人员最有用。有关更多信息,请参阅 Visual Studio 文档。我从未弄清楚“设置加载选项”的真正目的,但它们似乎很重要。
源代码
本文之所以发布在“免费工具”下,是有原因的:AddInManager
的源代码并非优秀实践的典范。因此,如果您愿意,可以使用它们,但不要期望它们具有特殊的质量。
树节点由实现 IAddinInfo
的不同类组成,以 AddinInfoImpl
为默认实现。每个节点都知道如何枚举其子节点,并提供启用/禁用、探索等操作。实现类都称为 AII
something。
以下类位于 phlib
项目中
树逻辑基于我关于 C# 通用树 的文章。内部数据模型包含 AIIsomething 辅助对象。控制器会在模型更改时自动更新树形视图。就像书里一样!
TaggedString
将一个 string
与一个 Object
关联起来。列表和组合框控件的 Windows Forms 包装类有点令人失望。它们没有提供标准的
{
string Label;
object Tag
}
每个项目的模式,而是要求您为每个项目提供一个对象,并使用该对象的 ToString
作为标签。TaggedString
包含一个 string
和一个 object
,并重写 ToString
,实质上提供了 { Label, Tag }
机制。
AIIRegistryFreeAddIn::GetAddinOptions
和 ::SetAddinOptions
显示了修改 XML 文件的基本工作。要么简单任务仍然很痛苦,要么 XML 就是我的弱项。
还有一些 string
辅助例程,我认为在项目中没有使用。
Licence
二进制形式的工具可免费用于任何用途,并可免费重新分发,只要保持不变并注明原作者(例如,通过链接到本文)。
加载项本身的源代码可用于非商业用途,请在此分享错误修复和改进。
如果您觉得这很有用,请留言!
为了满足 Shog9 的视觉愉悦要求,在撰写本文时没有创建有序或无序列表。