在使用Visual Studio进行开发的过程中,插件(Addins)为提供了极大的便利,但有时候,插件的管理和加载机制可能会变得复杂且不透明。本文将介绍一个名为AddinManager的工具,它可以帮助开发者更好地控制和管理Visual Studio中的插件。
这个工具虽然界面并不完美,但它能提供对插件的完全控制,无论是创建的插件还是使用的插件。它是为了解决Visual Studio 2005中的插件管理问题而开发的,但也应该适用于Visual Studio 2002和Visual Studio 2003。
在使用这个工具之前,需要明白这是一个为高级用户设计的快速解决方案。尽管开发者在使用过程中没有遇到任何问题,但这个工具仍有可能导致一些不可预见的问题。在进行任何更改后,需要重启Visual Studio。此外,在更新或卸载插件时,请确保没有禁用它,否则可能会留下一些旧文件,这可能会让这个工具感到困惑。
Addin Manager提供了一个插件搜索位置的树形结构,每个位置都适用于当前用户和本地计算机。在每个位置下,列出了实际的插件。
“无注册表搜索路径”是Visual Studio2005查找.vsaddin文件并自动加载插件的文件夹。理论上,插件的安装只需要将一些文件复制到这些位置,不需要修改注册表。然而,由于这些位置的文档不完整,可以自由配置,但当前设置不能被合法地发现,因此这并不总是按预期工作,所以大多数插件开发者仍然使用注册表方法。
当然,Visual Studio 2005、2003和2002的注册表键也是可访问的。
可以使用复选框启用/禁用单个插件,也可以启用/禁用一些(不是全部)搜索路径和注册表项。当启用/禁用一个插件或文件夹时,它会以一种Visual Studio不再识别的方式重命名(但仍然存在)。
需要注意的是,并非所有的复选框都能工作,因为开发者没有找到一种方法来显示它们——只有在选定的项目上。(他猜测它们可能被隐藏在状态图像列表中,但那是另一天的工作)。
可以点击“Explore”链接来找到选定项(插件、搜索路径、注册表键)的位置。对于无注册表路径和插件,这将启动资源管理器并选中给定的项目。对于注册表键,这将启动regedit,需要从regedit菜单中选择“Favorites/AddIn Manager - last Explore”。
有时候,Visual Studio会忘记插件。它们就在那里,但它们不会出现。Visual Studio有一个/ResetAddin选项来重置指定名称的插件——现在可以通过AddinManager来做到这一点。
如果选择了一个插件,可以点击ResetAddins后面的VS2005 / VS2003 / VS2002链接之一。这将尝试启动相应的Visual Studio版本,并在命令行上使用.../ResetAddin <当前选定的插件>...
这可能是对开发者最有用的。更多信息请参考Visual Studio文档。开发者从未弄清楚设置加载选项的真正目的,但它们似乎很重要。
本文发布的原因是“免费工具”:AddInManager的源代码并不是良好实践的典范。所以如果愿意,可以使用它们,但不要期望它们的质量特别高。
树节点由不同的类实现IAddinInfo,AddinInfoImpl作为默认实现。每个节点都知道如何枚举它的子节点,并提供启用/禁用、探索等操作。实现类都叫做AII something。
以下类在phlib项目中:
// 树逻辑基于Generic Tree in C#文章。
// 内部数据模型包含AII something帮助对象。
// 控制器在模型更改时自动更新树视图。
// 就像在书中一样!
TaggedString将字符串与对象关联起来。Windows Forms的列表和组合框控件的包装类有点令人失望。它们没有为每个项目提供标准的C# {string Label; object Tag}模式,而是要求为每个项目提供一个对象,并使用对象的ToString作为标签。
TaggedString包含一个字符串和一个对象,并覆盖ToString,本质上提供了{Label, Tag}机制。
AIIRegistryFreeAddIn::GetAddinOptions和::SetAddinOptions展示了修改XML文件的基本任务。要么简单的任务仍然很麻烦,要么XML不是东西。
还有一些字符串帮助程序,认为它们在这个项目中没有被使用。