原文 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. Git协作流程(转)

    Git 作为一个源码管理系统,不可避免涉及到多人协作. 协作必须有一个规范的流程,让大家有效地合作,使得项目井井有条地发展下去."协作流程"在英语里,叫做"workflo ...

  2. 备忘录模式设计模式入门Memento

    //备忘录模式定义: //在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态. //这样以后就能够将该对象恢复到原先保存的状态 //实例:測试两种方案.两种方案在第一阶段的过程 ...

  3. SOA两个接口通常用于实现更:SOAP vs REST

    SOA协作架构异构系统,因此,一个跨操作系统的需求.跨语言的通用信息交换格公式. SOAP和REST它们是基于消息正文文本,在跨平台方面相比二进制消息优点.因此,作为选择SOA实施通常用于界面.但SO ...

  4. Oracle性能优化学习笔记WHERE在连接顺序的条款

     ORACLE自下而上分析顺序WHERE条款,根据这一原理,表之间的连接必须写在其它WHERE先决条件, 这些条件可以过滤掉要被写入记录的最大数目WHERE在条款结束. 比如:        (低效, ...

  5. Android 源码编译

    Google官方资料参考 http://source.android.com/source/building-running.html 1. 环境设置, 下载好源码后,进入源码目录,即之前执行 rep ...

  6. SQL Server使用规范

    原文:SQL Server使用规范 常见的字段类型选择 1.字符类型建议采用varchar/nvarchar数据类型 2.金额货币建议采用money数据类型 3.科学计数建议采用numeric数据类型 ...

  7. C语言学习_查找三分之二

    查找三分之二: #include <stdio.h> #define M 10 int main(void) { int front, near, mid1, mid2; int n; i ...

  8. 【转】HTTP协议两种提交参数的方式Form-data和raw

    原文:http://www.cnblogs.com/zhangfei/p/5099036.html HTTP协议的接口测试中,使用到最多的就是GET请求与POST请求,其中POST请求有FORM参数提 ...

  9. Jenkins + robot framework自动发送邮件报告

    一.Jenkins安装插件 进入系统管理—插件管理—可选插件下安装以下插件Email-ext plugin.Email-ext Template Plugin. 安装完如下: 二.系统设置 1.设置系 ...

  10. Apache & WebDav 配置(一)

    (一)简单Apache服务器的搭建!用于文件de上传.下载.修改.删除! ---------- - Apache 1. 使用最广的 Web 服务器.支持各种脚本(PHP)的执行 2. Mac自带,只需 ...