为 VS 2005+ 开发 Visual Studio 扩展

Developing a Visual Studio Extension for VS 2005+

我正在开发一个 Visual Studio 扩展,我希望与 VS 2005+(2005、2008、2010、2012、2013,最终是 2015)兼容。

我一直在研究实现这一点的要求,并在执行此操作时遇到了本手册 http://www.viva64.com/en/a/0082/。 它涵盖了很多关于如何实现这一点的细节,但是当我从头开始开发我的第一个 VS 扩展时,我迷路了。

文章说,

developing VS extension packages requires the installation of Microsoft Visual Studio SDK for a targeted version of IDE, i.e. a separate SDK should be installed with every version of Visual Studio for which an extension is being developed.

这是否意味着我需要 2005 SDK、2008 SDK、2010 SDK 等?

此外,我没有看到任何有关必须使用哪个版本的 Visual Studio 的信息。我找到了其他一些提到版本的文章,但它们与 2010+ 扩展有关。

我假设我应该使用 .NET Framework 3.5 来实现向后兼容性。

我有以下问题:

  1. 我应该在什么版本的 Visual Studio 上创建我的项目?
  2. 我应该定位哪个版本的 .NET 框架?
  3. 需要哪些 Visual Studio SDK?

您可以将 Visual Studio 2008 与针对 .NET 3.5 的 VS 2008 SDK 一起使用,以创建可以在 VS 2005+ 上 运行 的 Visual Studio 包。您还需要为其创建一个安装程序。

如果您不太需要 VS 2008 支持,使用 Visual Studio 2010 来创建可自行安装的 vsix Visual Studio 扩展以 VS 2010+ 为目标会简单得多。

您希望 VS 扩展与 VS2005+ 兼容,这似乎是一个武断的决定。为什么不是 VS2003+ 或 VS2008+?

无论如何,这是可能的,但非常困难,因为 VS 自 2005 年以来发生了重大变化。调试和测试以及扩展可能是一场噩梦。您必须跟踪哪个 VS 版本支持哪些功能。

为此,您必须开发 VSPackage。您引用的文章讨论了 VSPackage,但几乎没有提及兼容性。

这里的兼容性甚至无法在源代码级别实现。根据this强调重要部分:

Most VSPackages that work in Visual Studio 2005 will continue to work in Visual Studio 2008 without modification. Most services, entry points, and events maintain compatibility, but there are some exceptions, which are listed later in this topic. Programmatic interfaces also maintain compatibility generally, but elements of some interfaces may change and require source code modification to work with Visual Studio 2008.

即使在 Microsoft doesn't say anything about compatibility problems 时,也出现过这样的情况,即在以前的版本中一切正常,但在 Visual Studio 的更高版本中神秘地损坏了。

您必须使用条件编译并针对每个 VS SDK 版本编译扩展。此外,不同 IDE 版本的扩展部署模型也不同。

我的建议是针对 VS2010+ 而不是 VS2005。那会容易得多,而且大多数开发人员都在使用 VS2010+。