Несколько лет назад я написал надстройку для выполнения конкретных задач в SSMS. Я использую его все время и прошел через боль, пытаясь понять, как заставить его снова работать каждый раз, когда новая версия SQL-сервера нарушает модель надстроек.
Теперь я установил 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, но мне не удалось найти никаких подробностей о том, как использовать новый интерфейс или обновить устаревший код надстройки.
Примечание: есть несколько связанных вопросов SE Работает ли надстройка форматирования T-SQL Poor Man's для Management Studio 2012 в Management Studio 2016? и Подключаемые модули SQL Server 2016 не работают, но это разные вопросы, люди хотят, чтобы сторонние надстройки работали. Этот вопрос касается того, как изменить мою собственную надстройку, чтобы она работала в SSMS 2016.