为多个版本的Visual Studio开发Visual Studio插件

5
我被分配开发一些Visual Studio扩展,供我们内部使用。这些扩展需要支持几个不同版本的Visual Studio(VS2008、2010和2012-VS2005是一个很好的选择,但不是必需的)。我想尽可能以一致的方式开发它们,尽可能重用代码,并将其适应于这些工具的现有项目结构,该结构是Visual Studio 2012 .sln。

开发这种类型的扩展最佳/最简单的方法是什么?VSPackage项目?我能制作一个在VS2012中开发的与2008兼容的VSPackage吗?

我目前编写的扩展所需的功能非常基本-我需要创建Tools菜单命令,可能还需要自定义toolwindow。我的要求可能会在以后改变,但目前我不需要编辑器装饰或类似的东西。

我看到了this这个问题,它可能看起来是重复的,但被接受的答案并没有回答这个问题,所以...

1个回答

3

这取决于您的扩展程序要做什么。

VS2008不支持扩展(.vsix),因此您需要编写作为msi部署的VSPackage。您也无法访问VS2010引入的许多新功能(更容易的编辑器集成和通过MEF访问vs服务),但基本操作,例如操作解决方案/项目/文件应该可以正常工作并适用于所有版本(例如使用DTE应该没问题)。

据我所记,对于VS2008,您还需要获取PLK,但在2010和2012中不再需要。

我没有尝试在VS2012中开发2008包,但您肯定可以在2012中开发2010扩展程序。

还要记住,VS2008是.Net 3.5,因此您的代码应使用它支持的.net 3.5和c#版本以实现可移植性。


我目前的需求非常基本 - 工具菜单命令,也许还需要一个工具窗口(已更新问题)。我以后可能会有更高级的要求,比如修饰,但到那时我们应该已经使用VS2012了。PLK的事情可能会破坏重用代码的机会。 - JohnL
1
PLK 仅在 VS2008 中加载您的包时需要,但代码仍应该是可重用的。据我所知,在所有三个版本的 VS 中,添加工具菜单命令和工具窗口的方法都是相同的。您可以为每个目标 VS(VS2010 和 VS2012 是 .vsix,而 VS2008 则使用 MSI 部署)创建不同的项目,并将文件作为链接共享,这样可以使 2010-12 的部署/调试更加容易(感谢 .vsix),并且每个项目可以针对不同的 .net 版本(2008-3.5,2010-4.0,2012-4.5)。 - Jarek Kardas
是的,我知道不同的部署技术,而且我精通MSI。关于那种项目设置,我已经看到其他项目这样做了,尽管我们的构建人员可能不会高兴 :)。此外,我们在其他地方使用共享文件作为链接,这让VS/TFS非常困惑。我更喜欢每个VS版本都有一个项目(都在同一个sln中),其中包含对一个公共项目的引用,该项目具有实际的插件代码。但是,能用就行吧。 - JohnL
我最终只开发了3个单独的插件。谢谢。 - JohnL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接