如何:安装一个源代码管理插件

创建源代码管理插件涉及三个步骤:

  1. 使用已定义的功能创建 DLL 在插件 API 参考本文档的数据源控件。

  2. 实现源代码管理插件 API 已定义的功能。 当 Visual Studio 需要它时,该插件请提供的接口和的对话框。

  3. 注册 DLL 进行适当的注册表项。

与 Visual Studio 的集成

Visual Studio 支持符合源代码管理插件 API 的源代码管理插件。

签入源代码管理插件

在运行的集成开发环境 (IDE) (ide) 可以调用到源代码管理系统之前,必须先查找导出 API 的源代码管理插件 DLL。

注册源代码管理插件 DLL

  1. 添加两项在指定产品名称子项执行的公司名称子级的软件子级的 HKEY_LOCAL_MACHINE 项下。 该模式是 \SOFTWARE HKEY_LOCAL_MACHINE \[公司名称]\[产品名称]\[] 项 = 值。 两项始终调用 SCCServerName 和 SCCServerPath。 每个为普通字符串。

    例如,因此,如果公司名称是 Microsoft,并且源代码管理产品名为 SourceSafe,则此注册表路径为 HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\SourceSafe。 此子级,先输入, SCCServerName,称为该产品的用户可读的字符串。 第二项, SCCServerPath,是的完整路径对 IDE 应连接的源代码管理插件 DLL。 下面提供了示例注册表项:

    示例注册表项

    采样值

    HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\SourceSafe\SCCServerName

    Microsoft Visual SourceSafe

    HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\SourceSafe\SCCServerPath

    c:\vss\win32\ssscc.dll

    备注

    SCCServerPath 是完整路径为 SourceSafe 插件。源代码管理插件将使用不同的公司和产品名称,但相同的注册表项路径。

  2. 下列选项注册表项可用于修改源代码管理插件的行为。 这些项在子保存和 SccServerName 和 SccServerPath 相同。

    • HideInVisualStudioregistry 项,如果您不希望源代码管理插件中显示插件选择列表 Visual Studio,可以使用。 此项也会影响自动切换到源代码管理插件。 此项的可能用途是,如果提供替换源代码管理插件的源控件包,但为了方便用户迁移来自使用源代码管理插件到源代码管理包。 安装时源代码管理包,则设置此注册表项,隐藏该插件。

      HideInVisualStudio 是 DWORD 值并设置为 1 隐藏该插件或 0 显示该插件。 如果注册表项未出现,默认行为是显示该插件。

    • DisableSccManager 注册表项来禁用或隐藏通常出现在 文件 - AMP_GT 源代码管理 子菜单中的 生成 Source Control Server 菜单选项。 选择此菜单选项称为 SccRunScc 函数 功能。 源代码管理插件可能不支持外部程序和您可能希望禁用甚至隐藏 生成 菜单选项。

      DisableSccManager 是 DWORD 值设置为 0 允许 生成 Source Control Server 菜单选项,将设置为 1 禁用菜单选项和设置为 2 隐藏菜单选项。 如果此注册表项未出现,默认行为是显示菜单选项。

    示例注册表项

    采样值

    HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\SourceSafe\HideInVisualStudio

    1

    HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\SourceSafe\DisableSccManager

    1

  3. 添加子级, SourceCodeControlProvider,在软件子级的 HKEY_LOCAL_MACHINE 项下。

    此子项下,注册表项 ProviderRegKey 设置为表示子项您在步骤的注册表中的字符串。 该模式是 \SOFTWARE\SourceCodeControlProvider\ProviderRegKey = SOFTWARE HKEY_LOCAL_MACHINE \[公司名称]\[产品名称]。

    下面是该子级的示例目录。

    注册表项

    采样值

    HKEY_LOCAL_MACHINE \SOFTWARE\SourceCodeControlProvider\ProviderRegKey

    软件 \Microsoft\SourceSafe

    备注

    源代码管理插件将使用相同的子项和访问名,但是,该值将有所不同。

  4. 创建一个子项名为 InstalledSCCProviders 在 SourceCodeControlProvider 子项下,再将一项。该子项下。

    此项的名称是提供程序 (用户可读的名称以及 SCCServerName 项指定的值相同),并且,该值为,同样,在创建的子步骤。 该模式是 \SOFTWARE\SourceCodeControlProvider\InstalledSCCProviders[显示名称] = HKEY_LOCAL_MACHINE \ SOFTWARE \[公司名称]\[产品名称]。

    例如:

    示例注册表项

    采样值

    HKEY_LOCAL_MACHINE \SOFTWARE\SourceCodeControlProvider\InstalledSCCProviders\Microsoft Visual SourceSafe

    软件 \Microsoft\SourceSafe

    备注

    可以同时具有多个源此类注册的控件插件。这是 Visual Studio 如何查找所有已安装的源代码管理插件基于 API 的插件。

IDE 如何定位 DLL

Visual Studio IDE 提供查找源代码管理插件 DLL 两种方法:

  • 发现默认源代码管理插件和无提示地连接到它。

  • 查找所有注册的源代码管理插件,用户选择一个。

若要定位 DLL 第一种方法, IDE 会在 HKEY_LOCAL_MACHINE \Software\SourceCodeControlProvider subkey for the entry ProviderRegKey 下。 此值的入口点到另一个子元素。 IDE 然后查找该第二个子名为的 SccServerPath 项在 HKEY_LOCAL_MACHINE 下。 此值的入口点 IDE 到 DLL。

备注

IDE 从相对路径不加载 DLL (例如,)。\NewProvider.DLL)。必须指定 DLL 的完整路径 (例如, c: \Providers\NewProvider.DLL)。这是通过防止未经授权或模拟的插件 DLL 加载增强 IDE 的安全性。

若要定位 DLL 第二种方法, IDE 会在 HKEY_LOCAL_MACHINE \Software\SourceCodeControlProvider\InstalledSCCProviders 子项下为所有项*。每项具有名称和值。 IDE 显示这些名称列表给用户。*当用户选择名称时, IDE 查找指向子级的选定的名称的值。 IDE 中查找该子命名的 SccServerPath 项在 HKEY_LOCAL_MACHINE 下。 提供的值的入口点 IDE 到正确的 DLL。

源代码管理插件需要支持查找 DLL 两种方法和,因此,设置 ProviderRegKey,复盖任何以前的设置。 更重要的是,则必须将自身添加到 InstalledSccProviders 列表,以便用户可以获得使用的源代码管理插件的选择。

备注

由于使用 HKEY_LOCAL_MACHINE 键,因此,只有一个源代码管理插件可以注册为在特定计算机的默认源代码管理插件 (但是, Visual Studio 允许用户确定哪个源代码管理插件他们要用于特定解决方案实际使用)。在安装过程中,检查源代码管理插件是否已设置;如果是这样,则应询问用户设置为默认安装的新源代码管理插件。在卸载时,不要移除与在 HKEY_LOCAL_MACHINE \SOFTWARE\SourceCodeControlProvider; remove only your particular SCC 子级的所有源代码管理插件是常见的其他注册表子项。

IDE 如何检测第 1.2/1.3 版本支持

Visual Studio 如何检测插件是否支持源代码管理插件 API 1.2 版和 1.3 版功能? 若要声明高级功能,源代码管理插件必须实现相应的功能。

首先, Visual Studio 检查调用返回的值 SccGetVersion 函数。 它必须大于或等于 1.2。

接下来, Visual Studio 确定特定新功能是通过检查在 SccInitialize 函数的 lpSccCaps 参数支持。

如果这两个条件时,新功能在版本 1.2 支持,而 1.3 来调用。

请参见

其他资源

使用源代码管理插件入门