如何更新 SQL 插件以在 SSMS 2016 中工作?

How to update SQL addins to work in SSMS 2016?

几年前,我写了一个插件来做我想在 SSMS 中做的特定事情。我一直在使用它,并且在每次 SQL 服务器的新版本破坏插件模型时,都经历了如何重新获得它 运行 的痛苦。

我现在已经安装了 SSMS 2016 和 2014,但尽管进行了大量搜索,我还是找不到关于如何更新 2016 插件的任何信息,而且我还没有找到执行此操作的方法。我的插件在 2014 年继续工作。

明确地说,我的插件使用 class 实现 IDTExtensibility2 和 IDTCommandTarget 的通用方法:

public partial class SSMSAddin : IDTExtensibility2, IDTCommandTarget 
{
    /// <summary>Implements the OnConnection method of the IDTExtensibility2 interface. Receives notification that the Add-in is being loaded.</summary>
    /// <param term='application'>Root object of the host application.</param>
    /// <param term='connectMode'>Describes how the Add-in is being loaded.</param>
    /// <param term='addInInst'>Object representing this Add-in.</param>
    /// <seealso class='IDTExtensibility2' />
    public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
    {
     .
     .
     .  
    }        
 .
 .
 .  
}

还有一个 XML 配置文件 (.addin),位于 LookInFolders 注册表项中列出的位置之一,例如

%APPDATA%\Microsoft\MSEnvShared\Addins

显然 SSMS 2016 引入了一些变化,如果不进行某种重写,现有插件将无法工作。此外,它似乎不再使用传统的 .addin 配置文件,因为它的注册表项不再包含旧版本用来查找它的 LookInFolders 注册表项。我在下面两个链接问题中的第一个问题中读到,SSMS 2016 使用新的插件接口,基于 Visual Studio 2015 Shell,但我无法找到有关如何使用新接口的任何详细信息或更新遗留插件代码。

注意:有几个相关的 SE 问题 Does the Poor Man's T-SQL formatting add-in for Management Studio 2012 work in Management Studio 2016? and SQL Server 2016 Plugins not working 但它们是不同的问题,人们想让第三方插件工作。这个问题是关于如何更改我自己的插件以使其在 SSMS 2016 中工作。

的确,.Addin 不再受支持。您需要一个构建到 "C:\Program Files (x86)\Microsoft SQL Server0\Tools\Binn\ManagementStudio\Extensions[Your extension name]" 中的 VSIX 项目。关于如何扩展 SSMS 2016 的信息不多但是:

这是 VSIX 项目的一些文档:https://docs.microsoft.com/fr-fr/visualstudio/extensibility/index

那个论坛对我帮助很大:https://www.sqlservercentral.com/Forums/1802009/Developing-Extensions-for-SSMS-2016

您不能再使用 Connect.cs。 SSMS 和您的代码之间的 link 现在可以使用命令和包,如我发布的第二个 link 中所述。

希望对您有所帮助

自从我在 2016 年提出这个问题以来,Microsoft 一直在不断发布新版本的 SSMS,但没有保持与现有扩展的向后兼容性。这里有扩展在较新的 SSMS 版本中工作所需的新更改的详细信息:

SSMS 2017:https://www.codeproject.com/Articles/1243356/Create-Your-Own-SQL-Server-Management-Studio-SSMS

SSMS 2018:https://www.codeproject.com/Articles/1377559/How-to-Create-SQL-Server-Management-Studio-18-SSMS

注意 1:除非您无法(由于公司限制等),尽快切换到 SSMS 2018 或更高版本.新的 SSMS 版本始终向后兼容早期的数据库,并且从 SSMS 2018 开始,Microsoft 删除了以前给开发人员带来很多麻烦的注册表并发症

注2:请注意用于给定开发的Visual Studio版本 SSMS 版本。否则事情很可能无法工作。例如,对于SSMS 2017,你应该使用VS2015开发,对于SSMS 2018,你应该使用VS2017。上面的链接对此进行了详细说明,但总的来说,SSMS 往往落后于最新的 Visual Studio shell。你也可以让它与最新的 VS/assemblies 一起工作,但这是一个很好的经验法则,可以让一些东西工作。