原文 How to write own add-in for SSMS 2012 (Final release version)

Reading internet forums I have noticed that some developers want to experiment and write own add-ins for Sql Server Management Studio (SSMS). As far as there are enough samples for SSMS 2008, I will focus here onimplementation of add-in for SSMS 2012.

Microsoft does not support development of plug-ins for SSMS officially and for good reason: they simply do not want to support backward compatibility of add-in API between different SSMS versions. There were already at least 2 "breaking releases", where developers had to seriously update plug-ins to make them working. It was update from SSMS 2005 to SSMS 2008 and from SSMS 2008 to SSMS 2012, not to mention "small jump" from SSMS 2008 to SSMS 2008R2. So, probably it is "ok" that they keep themselves free from obligations to keep any compatibility, because they want to improve SSMS as quickly as it gets and are doing it for past 8 years :).

In current release there were a lot of significant changes: SSMS is getting closer to standard DTE environment of Visual Studio - and that is why it has completely new way of detection of installed add-ins (will be described below).

Why am I writing this ? It is just a warning: if you are going to implement some "nice tool" to use internally in your company, you have to take into consideration that most probably it will stop working after next update to SSMS 2015(?) and you will have to spend some weeks before it will start working again. I just want to encourage you: if you miss some feature in SSMS that you think will also help other developers to do their T-SQL work more efficient - just write me and I will do my best to include it into the next release of SSMSBoost.

So, now no more words: download C# project with sample code of working plug-in. Unzip it and compile using Visual Studio 2010. It also compiles under C# Express Edition of Visual Studio 2010.

To compile the project you will need to update the reference to SqlPackageBase.dll
it is installed along with SQL Server Management Studio and is located under following path:
%PROGRAMFILES%\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\SqlPackageBase.dll
(C:\Program Files\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\SqlPackageBase.dll)

Sample includes following steps:

  • Registration of add-in within SSMS environment
  • Connecting to SSMS environment
  • Finding Main menu, Finding "Tools" menu item and adding own command there
  • Processing of command state (enabled/disabled)
  • Command execution
  • Accessing _current_ SQL Editor window and pasting some text into it

After you have compiled the sample code you have to let SSMS 2012 know that you want it to load your add-in.(This is breaking change from SSMS 2008 to SSMS 2012)
SSMSAddin.addin file provides information about location of add-in dll. So edit SSMSAddin.addin file  and update path mentioned by Assembly element to location where it resides (probably your bin\debug folder).

Next step - you have to put SSMSAddin.addin to one of "known" folders, where SSMS looks for .addin files. These folders are listed under this registry key:

HKCU\Software\Microsoft\SQL Server Management Studio\11.0_Config\AutomationOptions\LookInFolders

For example these folders are "good":
Putting SSMSAddin.addin into %PROGRAMDATA%\Application Data\Microsoft\MSEnvShared\Addins\ 
(C:\ProgramData\Application Data\Microsoft\MSEnvShared\Addins\)
Will install add-in for all users on the machine.

Putting SSMSAddin.addin into %APPDATA%\Microsoft\MSEnvShared\Addins\ 
(C:\Users\UserName\AppData\Roaming\Microsoft\MSEnvShared\Addins\) 
will install for specific user only.

Pay attention that MSEnvShared\Addins\ folder might not exist and you will have to create it yourself.

That's all. Run SQL Server Management Studio and look into "Tools" menu. You should notice new command there. Execute it and you will get some text output into currently opened SQL Editor window (pay attention - at least one SQL Editor window must be open).

This plug-in works for all editions of SSMS 2012, including SQL Server Management Studio Express edition, and both 32 and 64 bit builds. 
Andrei Rantsevich
Written:May, 2012
Last update: August, 2012 

How to write own add-in for SSMS 2012 (Final release version)的更多相关文章

  1. The type 'Expression<>' is defined in an assembly that is not referenced.You must add a reference to assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

    在我将一个.net framework 4.0+mvc4+ef5的项目,升级到.net framework 4.6.1+mvc5+ef6之后,解决了所有的升级带来的问题,唯独在razor的cshtml ...

  2. IMS Global Learning Tools Interoperability™ Implementation Guide

    Final Version 1.1 Date Issued:            13 March 2012 Latest version:         http://www.imsglobal ...

  3. maven官方教程

    What is Maven? At first glance Maven can appear to be many things, but in a nutshell Maven is an att ...

  4. wp8.1 sdk preview 预览版

    http://pan.baidu.com/s/1hqyusja?qq-pf-to=pcqq.c2c#dir/path=%2FWPSDK%208.1%20DevPreview%20Installerwp ...

  5. YASM User Manual

    This document is the user manual for the Yasm assembler. It is intended as both an introduction and ...

  6. 用SSMS连接Azure Sql Database 与连接本地库的一些操作区别

    背景 我们知道Azure Sql Database 可以降低运维成本.是一种Pass模式,有资源弹性设置,可以自由调整资源自动对应不同业务高峰(当然也可以降低费用成本),也方便项目后期的资源扩展,以及 ...

  7. SQL Server 扩展事件(Extented Events)从入门到进阶(2)——在GUI中创建基础扩展事件

    本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 第一篇文章中提到了如何在Profiler中创建跟踪(trace),并以服务器端(server-side)跟 ...

  8. Microsoft SQL Server Trace Flags

    Complete list of Microsoft SQL Server trace flags (585 trace flags) REMEMBER: Be extremely careful w ...

  9. SQL Server Extended Events 进阶 2:使用UI创建基本的事件会话

    第一阶中我们描述了如何在Profiler中自定义一个Trace,并且让它运行在服务器端来创建一个Trace文件.然后我们通过Jonathan Kehayias的 sp_SQLskills_Conver ...

随机推荐

  1. crm创建报告补充导航

    报告导航实现动态交互体验报告. 通过使用各种类型的操作的,报告允许用户导航到特定的报告.Microsoft Dynamics CRM 记录或其它网站 动态钻取到 Microsoft Dynamics ...

  2. Java设计模式菜鸟系列(十三)建模和实现状态模式

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39829859 状态模式(State):同意对象在内部状态改变时改变它的行为,对象看起来好像 ...

  3. leetcode第一刷_Length of Last Word

    不是非常明确出题人的意图,事实上这道题用java的话简直是太简单了,用split处理一下,得到全部单词的一个数组,然后求最后一个的长度即可了.我个人认为java里最成功的函数就是split了,我做pr ...

  4. thinkphp学习笔记10—看不懂的路由规则

    原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...

  5. JAVA转让JS功能

    今天,在发展中使用js和Java互动.通常我们使用更多的是js转让Java方法.可以使用dwr.Ajax.jquery.突然发现Java转让js然后,我真的没见过,今天,互联网提供以下信息,顺便总结: ...

  6. React.js再探(四)

    不知道看官们还记不记得上一节的内容,关于生命周期的.我们来个例子重温且练习一下. 传送门:http://www.cnblogs.com/galenyip/p/4574400.html 我们来实现一下时 ...

  7. Codeforces Round #248 (Div. 2) (ABCD解决问题的方法)

    比赛链接:http://codeforces.com/contest/433 A. Kitahara Haruki's Gift time limit per test:1 second memory ...

  8. AspNet.WebAPI.OData.ODataPQ实现WebAPI的分页查询服务-(个人拙笔)

    AspNet.WebAPI.OData.ODataPQ 这是针对 Asp.net WebAPI OData 协议下,查询分页.或者是说 本人在使用Asp.Net webAPI 做服务接口时写的一个分页 ...

  9. 【Linux】Vim编辑器-批量注释与反注释

    [-] vim编辑器---批量注释与反注释 方法一 块选择模式 插入注释 取消注释 方法二 替换命令 批量注释 取消注释 实例演示   vim编辑器---批量注释与反注释 在使用vim编写代码的时候, ...

  10. Ubuntu下一个openldapserver部署步骤

    1:安装zlib 下载zlib-1.2.3.tar.gz(或其它版本号) wget http://down1.chinaunix.net/distfiles/zlib-1.2.3.tar.gz # . ...