本节比较两种集成 Visual Studio 源控件;插件的源代码管理和提供一个源代码管理解决方案并显示新的数据源控件的一些功能。 Visual Studio 允许在源代码管理 Vspackage 之间的手动切换和源代码管理插件以及自动基于解决方案的切换。
源代码管理集成
Visual Studio 支持源代码管理集成选项的两种类型。 在 Visual Studio的所有版本中,您仍可以集成根据源代码管理插件 API 的插件 (以前也称为 MSSCCI API),提供基本源代码管理功能,当使用 Visual Studio 源代码管理用户界面时 (UI)。 源代码管理 VSPackage,另一方面,提供了一个新,最下面集成 Visual Studio SDK 路径适用于要求高级优雅和自治权在其数据源控件模型的源代码管理集成。
源代码管理插件
Visual Studio 的所有版本支持源代码管理插件 API 规范描述版本 1.2 作为集成路径。 源代码管理插件实现编写实现源代码管理插件 API 的 DLL 供源代码管理集成和注册函数 创建源代码管理插件如中所述。 此方法,集成开发环境 (IDE) (ide) 为对话框,例如注册,则签出、工具/选项属性页、工具栏和源代码管理标志符号使用 Visual Studio UI。 向源代码管理插件 API 的强是否遵从确保轻松集成到 Visual Studio 并显示一个未困难体验。 这意味着源代码管理插件必须实现在 API 和回调详细的大部分功能。
使用源代码管理插件 API,若要实现源代码管理插件,请执行以下步骤:
创建实现在 源代码管理插件指定的函数的 DLL。
注册 DLL 进行适当的注册表项 (介绍 如何:安装一个源代码管理插件)。
创建一个帮助器 UI 并显示,当提示按源控件适配器包 (Visual Studio 组件处理源代码管理功能通过源代码管理插件)
响应源代码管理命令, Visual Studio IDE 存在基本操作的标准 UI 到源代码管理插件然后将信息传递通过在源代码管理插件 API 定义的函数。 对于高级选项,源代码管理插件可以在存在自己的 UI,例如,浏览一个源代码管理项目的。 这意味着该用户可能显示有关 UI 两个不同的样式,在处理源代码管理时:Visual Studio 存在的 UI 和该的 UI 源代码管理插件存在。 这是最明显的高级源代码管理操作。
实现源代码管理插件的缺点
对高级功能,用户可以查看接口两个不同的样式,会导致出现混淆。
源代码管理插件绑定到源代码管理插件 API 提示的源代码管理模型。
源代码管理插件 API 可能太高的限制对某些源控件方案。
实现源代码管理插件的优点
Visual Studio 提供所有基本的源代码管理操作的所有 UI,以便源代码管理插件不必实现潜在的复杂 UI。
因为强的 API,源代码管理插件可以方便地与外部源代码管理程序提供更为广泛的功能;Visual Studio 不关心太多的源代码管理功能如何完成的,因此,只有已经根据源代码管理插件 API 来实现的。
实现源代码管理插件比源代码管理 VSPackage 非常容易。
源代码管理 VSPackage
Visual Studio SDK 允许深入的集成到源代码管理功能完全控制 " Visual Studio 中,和可视的完全替换 studio 提供了源代码管理用户界面。 源代码管理 VSPackage 向 Visual Studio 注册并提供源代码管理功能。 虽然一些源代码管理 Vspackage 可以向 Visual Studio 注册,因此,只有其中一个可以随时处于活动状态。 ,当处于活动状态时,源代码管理 VSPackage 对源代码管理功能的完全控制和外观在 Visual Studio。 在系统中注册的其他源代码管理 Vspackage 处于非活动状态,并且根本不会显示任何用户界面。
实现任何源代码管理 VSPackage 不需要任何 “或”方法。 源代码管理 VSPackage 的创建者在实现必须投资大量工作量很多源控制接口以及新 UI 元素 (对话框、菜单和工具栏) 复盖整个源代码管理功能。 有关详细信息,请参见 创建源代码管理 VSPackage。
实现源代码管理 VSPackage 的缺点
VSPackage 必须实现许多复杂的接口成功与 Visual Studio 集成。
VSPackage 必须提供对于数据源控件所需的所有 UI;Visual Studio 此区域不会提供支持。
源代码管理 VSPackage 亲密地附加到 Visual Studio,不能对独立计画,因此,函数不能是与源代码管理程序的外部发布轻松地共享。
实现源代码管理 VSPackage 的优点
由于 VSPackage 对源控件 UI 和功能的完全控制,用户显示有关数据源控件的一种无缝的接口。
VSPackage 并不限于特定源控件模型。