在共享 VSPackage 和版本控制 VSPackage 之间进行选择

不同版本的 Visual Studio 可以共存在同一台计算机上。 VSPackage 可以支持任意混合的 Visual Studio 版本。

可以通过两种策略(共享策略或版本控制策略)来并行安装 VSPackage。 这两者都适合存在多个版本的 Visual Studio 和 .NET Framework 的关联版本。

在共享策略中,注册了一个 VSPackage,以便在多个版本的 Visual Studio 中使用。 在版本控制策略中,会安装多个 VSPackage DLL,每个版本的 Visual Studio 都支持一个。

共享 VSPackages

在 Visual Studio 的多个版本中使用相同的 VSPackage 时,使用共享 VSPackage 是合适的。 若要实现共享 VSPackage,必须执行以下步骤:

  • 使 VSPackage 与多个版本的 Visual Studio 兼容。 有两种方法可用:

    • 将 VSPackage 限制为仅使用你支持的最早版本的 Visual Studio 的功能。

    • 对 VSPackage 进行编程,使其适应运行它的 Visual Studio 版本。 然后,如果查询较新的服务失败,VSPackage 可以提供较旧版本的 Visual Studio 中支持的其他服务。

  • 适当地注册 VSPackage。 有关详细信息,请参阅 VSPackage 注册托管 VSPackage 注册

  • 适当注册文件扩展名。 有关详细信息,请参阅 注册并行部署的文件扩展名。

  • 创建为适当版本的 Visual Studio 部署 VSPackage 的安装程序。 有关详细信息,请参阅 使用 Windows Installer组件管理安装 VSPackage。

  • 解决注册冲突问题。 有关详细信息,请参阅 VSPackage 注册

  • 确保共享文件和版本控制文件都遵循引用计数,以允许安全安装和删除多个版本。 有关详细信息,请参阅 组件管理

版本控制 VSPackages

在版本控制的 VSPackage 策略下,为支持的每个 Visual Studio 版本创建一个 VSPackage。 如果希望利用 Visual Studio 的更高版本提供的服务,这样做是合适的,因为每个 VSPackage 都可以发展,而不会影响其他版本。 然而,从单个代码库或多个独立代码库创建多个二进制文件的版本控制策略可能需要比共享策略更多的初始开发。 此外,可能需要执行其他安装工作,因为必须为每个版本创建单独的安装程序,或单个安装程序来检测已安装的 Visual Studio 版本以及 VSPackage 支持的版本。

二进制兼容性

通常,二进制兼容性允许使用早期版本的 Visual Studio 开发的本机代码 VSPackage 在更高版本的 Visual Studio 中运行。 但是,有三个重要异常:

  • 如果 VSPackage 依赖于公共语言运行时的特定版本,则必须确定它正在运行的 Visual Studio 版本。

  • VSPackage 可能依赖于另一个 VSPackage 或其他产品的特定功能。 因此,VSPackage 只能在满足依赖项的位置运行。

  • VSPackage 可能受 Visual Studio Service Pack 或更高版本 Visual Studio 中的安全修补程序的影响。 在这些情况下,使用早期版本的 Visual Studio SDK 开发的 VSPackage 在应用安全修补程序后可能无法在 Visual Studio 版本中运行。 但是,可以使用更高版本重新生成包,并在早期版本中运行它。

    必须使用与 Visual Studio 目标版本匹配的 Visual Studio 和 Visual Studio SDK 生成托管 VSPackage。

    除了规划 VSPackage 二进制文件的二进制兼容性外,还应考虑解决方案和项目文件格式。 如果 VSPackage 创建新的项目类型,则必须确定它是否可以在一个版本或多个版本的 Visual Studio 中运行。 有关详细信息,请参阅 升级自定义项目