原文 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. 先锋军Android注射技术《三》

    继续 于<两>通过专门出台ptrace实施注射的技术解决方案,在这一章,我就为大家介绍一Android在独特的喷射技术,我点了他的名字--Component Injection.顾名思义. ...

  2. POSIX 螺纹具体解释(1-概要)

    线程是有趣的 线程类似于进程.如同进程,线程由内核按时间分片进行管理.在单处理器系统中,内核使用时间分片来模拟线程的并发运行.这样的方式和进程的同样. 而在多处理器系统中,如同多个进程.线程实际上一样 ...

  3. UIViewAdditions(一个非常方便的工具类用它)

    我们在project在,改变或多或少控件的坐标-宽度-高度,然后,经常看到你的self.view.frame.origin.x,self.view.frame.size.width.........相 ...

  4. 海哥:T2C时代的到来了,那么什么叫T2C?

    昨天写了一篇文章叫做<我为什么选择家具行业,以及T2C概念的创办>,地址:http://user.qzone.qq.com/198819880/blog/1414399801 ,里面提到了 ...

  5. 省前训练...Orz

    A. 异形卵 Time Limit: 1000ms Memory Limit: 128000KB 64-bit integer IO format:      Java class name: Sub ...

  6. [Mac] Mac book pro互换SSD硬盘、生产启动U菜、TimeMachine恢复 小记

    Mac book pro 硬盘故障.互换SSD硬盘.启动U磁盘生产 小记 2012新年买Mbp了.尽管各种功能都能用,但常常频繁的出现鼠标风火轮,已经下好的电影在本地播放时都会隔个几分钟卡一下. 拿到 ...

  7. hdu 亲和串(kmp)

    Problem Description 人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考,因为他在很小的时候就知道亲和串如何判断了,但是发现 ...

  8. VAXVOIP SDK Licensekey

    Insert the following key to the SDK with SetLicenseKey call: VAXVOIP.COM-191P238P55P253P97P229P51P76 ...

  9. 重写ArcGIS的TiledMapServiceLayer呼叫世界地图图块

    require(["esri/layers/TiledMapServiceLayer"], function () {     dojo.declare("com.Str ...

  10. CSS3+HTML5特效4 - 横向无缝滚动

    先看例子 This is a test 1. This is a test 2. This is a test 3. This is a test 4. This is a test 5. This ...