Как обновить надстройки SQL для работы в SSMS 2016?

Несколько лет назад я написал надстройку для выполнения конкретных задач в 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.


person Reg Edit    schedule 10.10.2016    source источник


Ответы (2)


Действительно, .Addin больше не поддерживаются. Вам нужно построить проект VSIX в "C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\Extensions [ваше имя расширения]". Информации о том, как расширить 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 и вашим кодом теперь работает с командами и пакетами, как описано во второй опубликованной мной ссылке.

надеюсь, это поможет

person Peter Poufsoufle    schedule 14.06.2017
comment
Звучит многообещающе! Спасибо, посмотрю и отвечу дальше. - person Reg Edit; 15.06.2017
comment
Да, очень хорошо, это было недостающее звено. Теперь мы куда-то попали... - person Reg Edit; 16.06.2017
comment
Рад это слышать! Вот еще одна ссылка, которая мне показалась полезной в качестве примера: github.com/ErikEJ /SqlCeToolbox/tree/master/src/GUI/SSMSToolbox - person Peter Poufsoufle; 20.06.2017

С тех пор, как я задал этот вопрос в 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. Возможно, вы сможете заставить его работать и с последними VS/сборками, но это хорошее практическое правило, чтобы что-то работало.

person Reg Edit    schedule 11.12.2019