几年前,我写了一个插件来做我想要在 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 中工作。