How to write own add-in for SSMS 2012 (Final release version)
原文 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)的更多相关文章
- 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 ...
- IMS Global Learning Tools Interoperability™ Implementation Guide
Final Version 1.1 Date Issued: 13 March 2012 Latest version: http://www.imsglobal ...
- maven官方教程
What is Maven? At first glance Maven can appear to be many things, but in a nutshell Maven is an att ...
- wp8.1 sdk preview 预览版
http://pan.baidu.com/s/1hqyusja?qq-pf-to=pcqq.c2c#dir/path=%2FWPSDK%208.1%20DevPreview%20Installerwp ...
- YASM User Manual
This document is the user manual for the Yasm assembler. It is intended as both an introduction and ...
- 用SSMS连接Azure Sql Database 与连接本地库的一些操作区别
背景 我们知道Azure Sql Database 可以降低运维成本.是一种Pass模式,有资源弹性设置,可以自由调整资源自动对应不同业务高峰(当然也可以降低费用成本),也方便项目后期的资源扩展,以及 ...
- SQL Server 扩展事件(Extented Events)从入门到进阶(2)——在GUI中创建基础扩展事件
本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 第一篇文章中提到了如何在Profiler中创建跟踪(trace),并以服务器端(server-side)跟 ...
- Microsoft SQL Server Trace Flags
Complete list of Microsoft SQL Server trace flags (585 trace flags) REMEMBER: Be extremely careful w ...
- SQL Server Extended Events 进阶 2:使用UI创建基本的事件会话
第一阶中我们描述了如何在Profiler中自定义一个Trace,并且让它运行在服务器端来创建一个Trace文件.然后我们通过Jonathan Kehayias的 sp_SQLskills_Conver ...
随机推荐
- JAVA网络编程-----TCP沟通
java采纳TCP变速箱使用Socket和ServerSocket数据传输. 采纳tcp步模式数据传输: 1.设定client和服务器 ,分别对应Socket和ServerSocket 2.建立连接后 ...
- Jplayer小样
最近应公司要求需要一个MP3播放的插件,网上找了很多插件,看来看去还是jPlayer用着最舒服也最容易扩展.所以就找了个资料研究了下,简单做了个小DEMO.支持实时控制列表,常见的播放器功能. jPl ...
- ASP.NET MVC — 第 4 天
ASP.NET MVC — 第 4 天 目录 第 1 天 第 2 天 第 3 天 第 4 天 第 5 天 第 6 天 第 7 天 0. 前言 欢迎来到第四天的 MVC 系列学习中.如果你直接开始学习今 ...
- TortoiseGit push失败原因小结(转)
花了我一个晚上,终于弄明白为什么总是 push 失败的原因了!竟然是因为我用的是注册的用户名而不是邮箱名……囧死. 另外搞清楚了一个问题,就是 Git 和远程仓库交互有两种方式,即 https 方式和 ...
- cocos2d-x 发动机分析:程序如何开始和结束?
原创地址:http://game.dapps.net/gamedev/game-engine/9515.html 感谢原创分享! 怎么样使用 Cocos2d-x 高速开发游戏,方法非常easy,你能够 ...
- JavaScript之事件处理详解
一.事件传播机制 客户端JavaScript程序(就是浏览器啦)采用了异步事件驱动编程模型.当文档.浏览器.元素或与之相关的对象发生某些有趣的事情时,Web浏览器就会产生事件(event).如果Jav ...
- freemarker定义自己的标记(三)-nested说明
freemarker定义自己的标记 1.nested指令 是可选的,能够在<#macro>和</#macro>之间使用在不论什么位置和随意次数 2.演示样例说明 <#ma ...
- 网络资源(4) - extJS视频
2014_08_24 http://v.youku.com/v_show/id_XMjk2ODc0MjA4.html?f=7183617 extJS视频教程04——ExtJS框架入门
- oracle_导入、导出数据
逐步整理oracle导入导出数据 1.单表,不同库之间的导入导出 导出exp system/manager@myoracle file=d:\daochu.dmp tables=(table1) sy ...
- Swift得知——使用和分类功能(四)
Swift得知--使用和分类功能(四) 总结Swift该功能使用的总可分为七类 1 ---- 没有返回值,没有參数的函数 2 ---- 有參数和返回值的函数 3 ---- 使用元祖来返回多个值 4 - ...