6

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

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

需要明确的是,我的插件使用实现 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 问题Management Studio 2012 的穷人的 T-SQL 格式化加载项是否在 Management Studio 2016 中工作?SQL Server 2016 插件不起作用,但它们是不同的问题,人们想让第三方插件工作。这个问题是关于如何更改我自己的插件以使其在 SSMS 2016 中工作。

4

2 回答 2

4

事实上,.Addin 不再受支持。您需要将 VSIX 项目构建到“C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\Extensions[Your extension name]”中。关于如何扩展 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 和您的代码之间的链接现在可以使用命令和包,如我发布的第二个链接中所述。

希望有帮助

于 2017-06-14T18:41:59.507 回答
1

自从我在 2016 年提出这个问题以来,微软一直在继续发布新版本的 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 开始,微软消除了以前给开发人员造成如此多痛苦的注册表复杂性。

注意 2:请特别注意用于为给定SSMS 版本开发的Visual Studio版本。否则事情可能无法正常工作。例如,对于 SSMS 2017,您应该使用 VS2015 进行开发,对于 SSMS 2018,您应该使用 VS2017。这在上面的链接中进一步详细说明,但一般来说,SSMS 往往是最新的 Visual Studio shell 之后的一个。你也可以让它与最新的 VS/程序集一起工作,但这是一个很好的经验法则,可以让某些东西正常工作。

于 2019-12-11T12:14:51.357 回答