创建Visual Studio工具窗口 - VsAddin或VsPackage

时间:2009-08-05 18:12:40

标签: visual-studio vsx visual-studio-addins

简单问题 - 我找到了两种向Visual Studio(2008)添加工具窗口的方法:创建插件或创建包。

(地址:http://www.codeproject.com/KB/dotnet/vstoolwindow.aspx
(包裹:http://msdn.microsoft.com/en-us/library/bb165051.aspx

什么是“正确的”方式?

3 个答案:

答案 0 :(得分:11)

你可以做任何一件事,而且我已经做到了。在某些方面,插件更容易,但它们有一些恼人的缺点。

添加式:

  • +无需安装Visual Studio SDK
  • +无需使用包加载密钥(PLK)或签署分布式二进制文件
  • +使用可扩展性API(在许多方面简化代码)时更容易的开发过程
  • +更简单的安装过程(没有古怪的注册表内容)
  • - Doesn't seem to behave as well as VSPackage-based tool panes
  • - 我遇到了性能问题,这促使我使用VS SDK COM接口而不是Extensibility接口,从而导致显着的性能提升。换句话说,我的“加载项”现在基于VS SDK,并且只是一个加载项,因为它是通过XML文件而不是注册表加载的。 (另外,从我能说的一切来看,扩展性接口只是SDK的一个大型实用程序包装器。)

的VSPackage:

  • +您可以利用VS SDK的全部功能,包括其功能集和(可能在仔细使用时)性能优势
  • +似乎比加载项更可靠
  • - 需要签名的二进制文件,PLK和复杂的安装程序
  • - 学习曲线,许多看似简单的动作令人讨厌/错综复杂。我现在有一个程序集提供扩展方法,以便在COM接口上执行“明显(对我来说)”操作。在那之间,经验随着时间的推移而得到改善有类似的选项available to the community,如果你走这条路,你应该认真考虑。

答案 1 :(得分:1)

我认为在VS2010之前280Z28完全正确。但现在VS2010和VS012:

  • 不需要正式签名的软件包(可能只有那些转到Gallery的软件包);
  • 感谢VSIX,它可以非常轻松地安装也可以部署到Gallery的VSPackage。

此外,VS2010支持另一种可扩展性:那些是MEF扩展,即仅在IDE的特定事件(例如文本编辑器事件)上触发的轻量级插件。一个例子是FixMixedTabs扩展名。

只需创建一个VSPackage空包(没有菜单,命令,......)并在主类中复制它以创建一个VSPackage,它基本上在有活动解决方案时加载,并且只获得对{{1}的引用}。通过这种方式,您可以将其用作加载项。

DTE2

答案 2 :(得分:0)

如果您只是创建一个简单的工具窗口,那么我建议使用加载项路径。

包和加载项都是扩展Visual Studio的方法。一般来说,它们具有相同的功能。软件包功能更强大,可以更深入地集成到Visual Studio中。但是,更深层次的集成需要花费更多的成本和安装程序。

加载项旨在成为更轻量级的扩展机制。更小的加速时间和更容易的安装。

如果你所做的只是工具窗口,编辑器的基本交互我们的代码模型然后加载项是最好的路径。