【问题标题】:Developing a Visual Studio Extension for VS 2005+为 VS 2005+ 开发 Visual Studio 扩展
【发布时间】:2015-07-07 18:35:15
【问题描述】:

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

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

文章说,

开发 VS 扩展包需要为目标版本的 IDE 安装 Microsoft Visual Studio SDK,即应为每个正在开发扩展的 Visual Studio 版本安装单独的 SDK。

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

另外,我没有看到任何关于必须使用什么版本的 Visual Studio 的信息。我发现了一些其他提到版本的文章,但它们与 2010+ 扩展有关。

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

我有以下问题:

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

【问题讨论】:

  • 我怀疑您在开发适用于所有版本的单个扩展时会遇到很多麻烦。如果我是你,我会从 2015 年和 2013 年开始,并尝试将其向后移植。我敢肯定,您会遇到 2013+ 可能出现的情况,但以前的情况是不可能的。这将覆盖尽可能多的用户群。

标签: .net visual-studio visual-studio-extensions vsix vspackage


【解决方案1】:

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

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

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

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

在 Visual Studio 2005 中工作的大多数 VSPackage 将继续工作 在 Visual Studio 2008 中无需修改。大多数服务,入口 点和事件保持兼容性,但有一些 例外情况,将在本主题后面列出。程序化 接口通常也保持兼容性,但某些元素 接口可能会改变并且需要修改源代码才能工作 使用 Visual Studio 2008。

即使是Microsoft doesn't say anything about compatibility problems,也有一些情况是在以前的版本中可以正常工作,但在 Visual Studio 的后续版本中却神秘地坏了。

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 创建一个适用于任何版本的 Visual Studio(从 2005 年及以后)的扩展将是一个非常雄心勃勃的目标。这不仅仅是随时间变化的包的部署......
    • 我应该能够使用 extension.vsixmanifest 中的 标签在 2005 和 2008 上使用 msi 进行安装,并在 2010+ 上使用 vsix 对吗?我知道它比设置更多,但这消除了 vsix 限制。我今天会做一些测试,所以我会尝试想出一些东西。
    • @Daniel vsix 和 vsixmanifest 不受 VS 2005/2008 支持和识别。
    • 如果您使用 VS 2008 创建一个针对 .NET Framework 3.5 的包,它可能无法在只有 VS 2005 (.NET 2.0) 的机器上运行,因为缺少程序集,例如 WPF(同时使用 CLR 2.0不足以保证兼容性)
    • @SergeyVlasov 我知道它们不受支持,我不会在 2005 年和 2008 年的 msi 中部署它们。请参阅 blogs.msdn.com/b/visualstudio/archive/2009/10/27/… 了解我的意思。
    猜你喜欢
    • 2018-05-13
    • 2012-11-05
    • 2011-12-05
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多