如何更新SQL添加工作在SSMS 2016



几年前,我写了一个插件来做我想在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%MicrosoftMSEnvSharedAddins

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

注意:有几个相关的SE问题:管理工作室2012的穷人的T-SQL格式加载项在管理工作室2016中工作吗?和SQL Server 2016插件不工作,但他们是不同的问题,人们想让第三方插件工作。这个问题是关于如何改变我自己的插件,使其在SSMS 2016中工作。

事实上,. addin已不再受支持。您需要一个VSIX项目构建到"C:Program Files (x86)Microsoft SQL Server130ToolsBinnManagementStudioExtensions[您的扩展名]"。关于如何扩展SSMS 2016的信息不多,但是:

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

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

你不能再使用Connect.cs了。SSMS和代码之间的链接现在可以使用命令和包,正如我发布的第二个链接所解释的那样。

希望有帮助

自从我在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/程序集上工作,但这是一个很好的经验法则。

最新更新